Repository navigation
Protect V2 permission declines from forged prototypes - #802
Merged
Merged
Conversation
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.
The experimental V2 tool-error adapter previously copied a prototype from an untrusted error after checking only its shape. A forged prototype could expose sensitive data through custom inspection.
Require a separately trusted, host-created permission-decline sample before registering the adapter. Capture its prototype once at registration, build a clean cause from that prototype, and reject a missing or structurally invalid sample before installing a hook. Incoming error prototypes are never used. Add a live negative control for the forged prototype and an independently constructed Effect error, plus CI coverage on OpenCode 2.2.5 and 2.2.6.
This adapter remains unconfigured. The caller must authenticate the sample: the current public V2 plugin API does not expose the host decline constructor. The live fixture obtains one through its own controlled permission assertion; that fixture is not a production bootstrap. Other gateway and fail-closed boundary work remains outstanding.
Validation:
git diff --checkpassed.make validate).