Repository navigation
feat(cli): add oauth client-credentials profiles - #1154
Merged
aaltshuler merged 13 commits intoOct 29, 2026
Merged
Conversation
This was referenced Oct 26, 2026
aaltshuler
marked this pull request as ready for review
October 28, 2026 18:29
ragnorc
reviewed
Oct 28, 2026
ragnorc
left a comment
Contributor
There was a problem hiding this comment.
Reviewed at 4cefec2. Two behaviour points to settle before this leaves draft:
- The renewal identity pin is wider for existing exec and token profiles (
managed/auth.rs). - With OAuth,
cluster token --clearreports a removal it cannot perform (managed/data.rs).
The other inline comments are smaller: interoperability (expires_in, mapping 5xx to "refused", the profile transport), error detail for static profiles, two duplications and a 16 s test sleep.
One interaction I checked: #1185 makes the server answer an unadmitted OIDC subject with 403 not_admitted and no challenge. This PR only reacquires after local expiry or the typed near-expiry issuance refusal, so a 403 cannot start a reacquisition loop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
RFC 0059 separates credential acquisition from target selection. Unattended clients currently need a pre-issued bearer or an external helper to use OAuth client credentials. This adds one optional
oauth_client_credentialsprofile provider for existing cluster, graph and stdio MCP commands. No commands or organization-administration operations are added.The provider makes a bounded HTTPS
client_secret_postexchange using an explicit endpoint, client ID and environment/file secret reference. It requires a positive finiteexpires_in, uses system trust and direct networking independently of the managed profile's transport, and keeps credentials in invocation memory. Provider service permissions govern organization operations; applied server policy governs graph and deployment operations.cluster tokenbehavior while OAuth remains memory-only. A fresh OAuth--clearreportslocal_credential_removed: false, does not probe older persistent custody and performs no remote revocation.Validation at final integration head
7794f31f(normal merge of mainb9035d5a): all 379 CLI unit tests and 61 actual-process scenarios pass with matching CLI/server binaries; nine existing unit and five process nightly cases remain ignored. Four unit and two process regressions first reproduced the review findings and now pass, covering legacy identity rotation, original static-source refusal preservation, truthful clear, and provider error classification. Formatting, AGENTS links, all 422 Markdown checks and release-note preview pass. All required CI checks pass on this exact head (28 distinct passing checks; four conditional jobs skipped). Independent code review found no remaining issue in the working patch; human review threads remain open for re-review.Tests use local HTTPS identity-provider fixtures. Provider-specific live activation remains separate. The branch incorporates current
main, including #1179 and #1124.