Repository navigation
feat: choose the upstream credentials an assistant's turns use - #8043
Conversation
Administrators can create remote_session, service_account, static_credential and pass_through auth clients, offer an existing client on another server, and replace an administrator-created client's headers. The typed resolver treats administrator-created clients and associations as authoritative instead of checking them against the server settings that backfilled copies mirror.
Server settings add a credential another server already offers or create a new one, and a credential's sheet edits and rotates its headers. The static Authorization identity choice is renamed to a shared credential. Agent pages edit credential blocks for managers and connection owners.
…o daniel/aim-596-feat-dashboard-auth-client-setup
Where typed auth client resolution is enforced, consent offers each server's permitted auth clients, preselects the remembered choice or the fixed order, and records the picked client and its own registration on the new credential. Gateways offer the choice per member and capture tools through it.
A member added after a credential was issued gets no-auth or its single ready permitted client recorded atomically the first time it is used, where typed auth client resolution is enforced. Otherwise it stays unavailable until the person reconnects to choose.
Agent key creation records an auth client choice per server under a new api_key credential kind, rotation copies it, and under enforcement the key is served through those choices on direct servers and agent gateway members. The key wizard asks for a credential on servers offering several.
…wser Token requests name a per-server choice with upstream_auth_client; issuance profiles let an admin choose for an OAuth client or workload subject; with neither, the only ready credential is used, else selection_required.
Admins pick, per trigger and execution context, the credential each MCP server is served with. A change is a new profile version, so running turns keep theirs. Listed and changed through the API, the assistant's Identity tab and a Platform MCP tool; audited.
🦋 Changeset detectedLatest commit: b594a47 The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
There was a problem hiding this comment.
All reported issues were addressed across 58 files
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
There was a problem hiding this comment.
All reported issues were addressed
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
Bind a registration's issuer to the client's project, refuse empty header entries, keep stored secrets across '_'/'-' spellings, report members' choice among several credentials in get_my_mcp_connection_status, map the post-offer read failure, and cover admin clients and cross-server offers.
…o daniel/aim-596-feat-dashboard-auth-client-setup
…aniel/aim-596-feat-consent-auth-client-picker
Let an agent approval proceed when only the person lacks access, offer connect and reconnect for identity-provider clients, record no client for a no-auth server, and let a later no-auth approval clear the remembered client.
… daniel/aim-597-mig-issuance-selection-profiles
…niel/aim-597-feat-headless-auth-client-choices
…daniel/aim-598-feat-assistant-profile-choices
|
Found 1 test failure on Blacksmith runners: Failure
|
Drops the "New:" prefix, names the reuse option "Existing credential" and leaves it out when no other server has a credential to share. The upstream sign-in row now says what probing a remote upstream found.
…aniel/aim-596-feat-consent-auth-client-picker
…niel/aim-596-feat-gateway-new-member-choices
…niel/aim-596-feat-agent-key-auth-client-choices
… daniel/aim-597-mig-issuance-selection-profiles
…niel/aim-597-feat-headless-auth-client-choices
…daniel/aim-598-feat-assistant-profile-choices
…suance-selection-profiles Regenerate the issuance selection profiles migration on top of main (SQL unchanged).
…choices # Conflicts: # server/internal/demoseed/queries/04_servers.sql # server/internal/demoseed/repo/09_postflight_identity.sql.go # server/internal/platformmcp/queries.sql
# Conflicts: # server/internal/demoseed/queries/04_servers.sql
# Conflicts: # seed/demo/PAGES.md # server/internal/demoseed/queries/04_servers.sql # server/internal/demoseed/queries/09_postflight_identity.sql # server/internal/demoseed/seed_04_servers.go # server/internal/demoseed/seed_09_postflight_identity.go
There was a problem hiding this comment.
All reported issues were addressed across 58 files
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
…nt credential choices


![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
AIM-598 (1 of 2)
Stacked on #8042.
Summary
executionprofiles.SetChoicewrites a new version that copies every other choice. Turns already running keep the version they bound, and the next turn binds the new one.Bindstill only fills servers that have no choice, so nothing changes silently.CheckConfiguredChoice. Userless profiles take shared credentials only (personal and EMA are refused). A server the assistant does not reach through a proxy is refused.expected_version, so a stale read is a conflict, never an overwrite. Each change is audited asassistant:update_execution_profile, with before and after choices, in the same transaction.mcp:authchecks still run on every request.assistants.listExecutionProfiles(assistant read): each trigger × context, with each server's choice and its source (admin,issuance,backfill, orautomaticfor the choice the next turn would make). Servers with no choice show their gap reason, and every server lists the options its context can choose.assistants.setExecutionProfileChoice(assistant write).choose_assistant_upstream_credential, next toselect_assistant_runtime. It previews withconfirmed:false, andconfirmed:trueneeds the exact trigger, context, server, choice andexpected_version. External audience only, org admin plus assistant:write, with bounded refusals. Managed assistants cannot change their own credentials.Motivation
RFC section 7.8: assistant turns cannot see a consent picker, so ambiguous servers need an explicit, versioned choice that an admin can make and audit without changing turns that are already running.
Gutternote review steps