fix(supervisor): classify credential placeholders in request bodies - #3246
Open
johntmyers wants to merge 1 commit into
Open
fix(supervisor): classify credential placeholders in request bodies#3246johntmyers wants to merge 1 commit into
johntmyers wants to merge 1 commit into
Conversation
Closes #2904 Signed-off-by: John Myers <johntmyers@users.noreply.github.com>
johntmyers
requested review from
a team,
derekwaynecarr,
mrunalp and
sjenning
as code owners
September 9, 2026 23:46
|
🌿 Preview your docs: https://nvidia-preview-pr-3246.docs.buildwithfern.com/openshell |
Collaborator
Author
E2E Test AttestationLocal Docker E2E passed against the supervisor built from the committed source tree.
Tests Executed
Rust E2E result: 1 passed, 0 failed, 0 ignored, 45.35 seconds. Conformance reported Live model/agent API smoke tests were not run. Podman is not installed on this host. Built-in agent profile coverage is provided by the Rust tests reported in the PR description. |
13 tasks
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.
Summary
Tool output containing credential-placeholder syntax can poison conversation history and block every subsequent model request. Classify REST body placeholders against a request-scoped credential snapshot so unknown literals and valid references bound to another endpoint pass unchanged, while destination-bound and uncertain references remain denied.
Related Issue
Closes #2904. Includes the foreign-provider reproduction consolidated from #3237.
Changes
credential_placeholder_in_request_body, emit controlled OCSF denial reasons, and discard rejected upstream requests. Apply the handling to CONNECT and forward-proxy paths.Testing
mise run pre-commitpasses, including the commit hook.mise run testpasses.mise run cipasses.OPENSHELL_E2E_DOCKER_TEST=credential_gating mise run e2e:dockerpasses: CLI conformance smoke and the credential-gating E2E test.The Docker run built the supervisor from this source tree and exercised both conversation-history cases and replay through a real sandbox. Built-in Codex, Claude Code, Copilot, and GitHub profile definitions are covered by deterministic tests. Live agent/model API smoke tests were not run; Podman is not installed on this host.
The full test/CI commands used a command-scoped
tag.gpgSign=falseGit override because the temporary-repository tag fixtures otherwise inherit local tag-signing configuration. No global Git settings were changed.Checklist