Enforce inherited permissions for spawned workers - #843
Merged
TheGreatAxios merged 6 commits intoSep 10, 2026
Conversation
TheGreatAxios
commented
Sep 9, 2026
TheGreatAxios
left a comment
Collaborator
Author
There was a problem hiding this comment.
Critic · Comment
Independent review of 6d809a37 found no blocking defects. The worker permission bypass is closed at reactor authorize, middleware ownership, and audit persistence.
- Workers inherit the live parent gate instead of
permissiveAuthorize/noopAuditStore. - Unresolved asks deny without hanging or invoking an approval callback.
- A worker-local ownership marker prevents middleware from double-evaluating or asking.
- Worker audit records persist under a dedicated isogit store.
Residual nits are comment hygiene and extra grant-path coverage, not merge blockers. Runtime commitAudit failure remains nontransactional by existing collector design.
TheGreatAxios
force-pushed
the
cl-7531-subagent-workers-bypass-permission-enforcement
branch
from
September 10, 2026 01:17
0fe3606 to
ebc95d5
Compare
An identity-store ownership flag made the permission plugin worker-aware. A view over the parent gate reports isReactorGated and maps unresolved asks to denials that name the subject.
Parent MCP handlers closed over a middleware-gated isReactorGated of false, so an allowed worker call re-entered evaluate and hung on requestApproval. Workers now wrap inherited MCP tools with the same reactor-gated view as posix.
Workers wrap inherited MCP handlers with the reactor-gated view. If the factory stored parent-gated tools, that outer wrap would still call the parent's requestApproval.
Workers deny without asking when parent-gated MCP tools are wrapped again. A later call id after a parent grant must still pass gateToolCall instead of reusing the prior deny.
posix path escape rewrites workspace paths to their realpath before gateToolCall. Comparing cache identity after the same resolve keeps a worker allow from being re-decided as a deny on Darwin tmpdir symlinks, without letting a reused call id inherit allow onto a different tool or command.
TheGreatAxios
force-pushed
the
cl-7531-subagent-workers-bypass-permission-enforcement
branch
from
September 10, 2026 01:32
ebc95d5 to
384a601
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
Verification
bun run typecheck,bun run build, andbun run testpassbun run checkpasses: 6,298 tests, 0 failedFixes CL-7531