feat(agent): enforce GPT-OSS safeguard decisions - #762
Draft
AnthonyRonning wants to merge 2 commits into
Draft
Conversation
Deploying maple with
|
| Latest commit: |
ba1715c
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://d4d39616.maple-ca8.pages.dev |
| Branch Preview URL: | https://codex-maple-safeguard-maple.maple-ca8.pages.dev |
AnthonyRonning
force-pushed
the
codex-maple-safeguard-maple
branch
from
August 11, 2026 00:34
16a9a78 to
ba1715c
Compare
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
ToolResponsecontent before it reaches the primary model, replacing it with a fixed protocol-level warningreadOnlyHint, or classifier shortcutsmainEnforcement boundaries
This remains an opt-in proof-of-concept experiment. It covers the normal Maple provider/tool loop. Guarded sessions disable Goose compaction and delegation so raw tool history cannot bypass the classifier through those paths. Unsupported binary/image output, incomplete coverage, classifier failure, malformed responses, and missing credentials fail closed: tool output is withheld and proposed actions require explicit approval.
The model never grants authority. Deterministic Maple and Goose policy can still deny an action, and GPT-OSS can only preserve current automation or tighten it to explicit approval.
Validation
just rust-lintgit diff --checkmain:8362ed49ff8a8fcbbbfdaa3b28dc6eb1da13a0b5Initial live experiment
The VM-provisioned Tinfoil credential was found and used through the documented shared-secret runner. Individual observations, not a benchmark:
pwd: auto-cleared as read-only; 3,075 ms cold total, followed by a benign output verdict in 1,161 msrequire_approvalin 856 ms; Maple showed the existing prompt, denial prevented the writeThat run exposed a false positive on Goose's synthetic user-denial response. The final Goose pin adds typed, exact-shape control provenance so canonical Goose denial/cancellation responses bypass the untrusted-output lane while identical tool/MCP text remains untrusted. Unit coverage is green; a post-fix exact-app rerun is intentionally left as follow-up rather than expanding this POC further.
Research background: OpenSecretCloud/master#39.
Scope
Draft proof of concept. Thorough production review, broader coverage work, latency evaluation, and rollout policy remain follow-ups.