Repository navigation
fix(providers): harden static credential placement - #4886
johntmyers wants to merge 2 commits into
Conversation
|
🌿 Preview your docs: https://nvidia-preview-pr-4886.docs.buildwithfern.com/openshell |
Compatibility review (advisory)New or updated breaking changes; see the full report for all findings. 1. api-behavior — No explicit risk acceptance foundStatic-credential delivery previously required endpoint-binding support; now polling and configuration push also require supports_static_credential_placement.
2. configuration — No explicit risk acceptance foundEndpoint-bound profiles previously delivered sandbox credentials without placement metadata; now missing placement causes withholding, including Codex refresh and ID tokens.
3. policy — No explicit risk acceptance foundStatic placeholders previously resolved at supported endpoint-authorized locations; now profile placement restricts them and overrides request_body_credential_rewrite and websocket_credential_rewrite.
4. rust-sdk — No explicit risk acceptance foundGenerated GetSandboxProviderEnvironmentRequest, StaticCredentialBinding, and SupervisorHello gain public fields absent from their baseline shapes.
5. typescript-sdk — No explicit risk acceptance foundGenerated raw GetSandboxProviderEnvironmentRequest and SupervisorHello types gain the required boolean property supportsStaticCredentialPlacement.
Review details
Advisory review; publication gates are unchanged. |
Compatibility review (advisory)New or updated breaking changes; see the full report for all findings. 1. policy — No explicit risk acceptance foundStatic placeholders previously resolved in supported headers, query values, and paths at authorized endpoints; existing auth_style metadata now restricts those locations automatically.
Review details
Advisory review; publication gates are unchanged. |
|
Label |
johntmyers
left a comment
There was a problem hiding this comment.
gator-agent
PR Review Status
The independent code review found no blocking issues in the static credential placement changes. The implementation follows issue #4883, with documented compatibility limits and regression coverage for placement, credential ownership, and explicit body/WebSocket rewriting.
Blocking findings: No blocking findings remain.
Carried findings: None.
Non-blocking suggestions: None.
Gator metadata
- Validation: Focused provider/supervisor hardening requested by linked issue #4883; author repository admin authority verified.
- Docs: Provider overview, profiles, and network policy guidance updated.
- Checks: Current-head Branch Checks, Helm Lint, Trivy Changes, and DCO pass.
- E2E: test:e2e required for credential flow and network enforcement; E2E Label Help is queued; follow its instructions next cycle before pipeline handoff.
- Head SHA:
8531c4b4fd8f4080d9b41499a2517e4612ef19df - Base SHA:
92434dcb2b6248ac827df05c00551fe7a1fedf17 - Merge base SHA:
92434dcb2b6248ac827df05c00551fe7a1fedf17 - Patch ID:
d07c1a03a4ccf6863379380eaf9475b4dc605fac - Gator payload:
13 - Review mode:
initial - Previous reviewed SHA: none
- Review budget exhausted: no
- Maintainer decision required: no
- Next state:
gator:in-review(review complete; awaiting E2E dispatch)
Blocker Follow-Up NudgeThis PR is still blocked by merge conflicts with Next action: @johntmyers, please resolve the merge conflicts and push an updated head so Gator can check the delta and current-head CI. Gator metadata
|
Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com>
Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com>
8531c4b to
2d80c50
Compare
johntmyers
left a comment
There was a problem hiding this comment.
gator-agent
PR Review Status
Thanks @johntmyers for resolving the merge conflicts and reporting the post-rebase checks. The independent follow-up review confirmed that all 22 files retain the previously reviewed additions and deletions, checked the affected integration context, and found no new blocking issues. The merge-conflict blocker is cleared, and current-head CI and E2E are queued or running.
Blocking findings: No blocking findings remain.
Carried findings: None.
Gator metadata
- Validation: Focused provider/supervisor hardening follows issue #4883; author repository admin authority verified.
- Docs: Provider overview, profiles, and network policy guidance cover automatic enforcement and compatibility limits.
- Checks: DCO, Helm Lint, and Trivy Changes pass; Branch Checks is running. Maintainer approval remains missing after the rebase and is required before merge.
- E2E: test:e2e is applied. Current-head Branch E2E Checks run 41140967194 is queued with successful build prerequisites and remaining build jobs queued. The older E2E Label Help rerun instruction targets the prior head; the new head already has its own required run.
- Head SHA:
2d80c50d12a6be3bf9c6b0421264de9c694afdd4 - Base SHA:
c2311ad01eca37a12abc3ea50446c6487d862ffb - Merge base SHA:
c2311ad01eca37a12abc3ea50446c6487d862ffb - Patch ID:
48db3882e2aa27cfa7e44fdb186b3b3ee62721f8 - Gator payload:
13 - Review mode:
follow_up - Previous reviewed SHA:
8531c4b4fd8f4080d9b41499a2517e4612ef19df - Review budget exhausted: no
- Maintainer decision required: no
- Next state:
gator:watch-pipeline
Summary
Enforce static credential placement in the supervisor using the provider profile's existing
auth_stylemetadata. Block moving a header credential into an arbitrary query parameter, path, or unrelated header while preserving older gateway/supervisor interoperability and documented rewrite policies.Related Issue
Closes #4883
Changes
Release Notes
Static credential placement is enforced automatically when a supporting gateway forwards usable existing profile auth metadata to a supporting supervisor. Components can upgrade in either order; missing metadata preserves legacy behavior. Credentials without metadata and older components retain the earlier substitution exposure. Explicit body/WebSocket policies and trusted signing keep their existing permissions.
Testing
Known limitation:
proxy::tests::mediated_connect_keeps_workload_bytes_read_with_the_synthesized_headertimed out on the final revision, then passed six consecutive exact reruns. Unchanged main (92434dcb2) passed seven exact runs in the same environment. The fixture is unchanged and exercises credential-free raw CONNECT, but the timeout's cause remains unresolved; no baseline failure was observed. The 4,965-test aggregate above excludes this test and does not claim an unfiltered suite pass.Rebased onto main
c2311ad01on 2026-10-30; new head2d80c50d1. The final patch additions/deletions match the pre-rebase implementation. Post-rebase checks passed: 332 credential-filtered tests across core, server, and network, 43 placement-filtered tests, and whitespace validation. Earlier full-suite, Docker, and mixed-version results above predate this rebase. New CI results are pending.The compatibility advisory flags the intended restriction on using header-declared credentials in URLs or unrelated headers; applications must use the profile's declared location.
Checklist