Skip to content

Block policy denials in reactor-gated tool middleware - #844

Merged
TheGreatAxios merged 6 commits into
mainfrom
cl-7530-gatetoolcall-middleware-bypass-under-reactorgated-is
Sep 10, 2026
Merged

Block policy denials in reactor-gated tool middleware#844
TheGreatAxios merged 6 commits into
mainfrom
cl-7530-gatetoolcall-middleware-bypass-under-reactorgated-is

Conversation

@TheGreatAxios

@TheGreatAxios TheGreatAxios commented Sep 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Under reactor gating, gateToolCall still authorizes the call so deny-list policy returns a blocked error and never invokes next.
  • Ask verdicts still skip the TUI overlay and defer to the reactor.
  • Two-pass tests cover auto-allow, auto-shell deny, and headless deny so a prior authorizeCall does not skip the second log.

Verification

  • bun run typecheck, bun run build, and bun run test pass
  • bun run check passes

Fixes CL-7530
Changelog: bug

@linear-code

linear-code Bot commented Sep 9, 2026

Copy link
Copy Markdown

CL-7530

@TheGreatAxios TheGreatAxios left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No blocking findings. Remaining note was the two-pass deny tests (auto-allow, auto-shell deny, and headless deny) so a prior authorizeCall does not skip the second log; this PR includes those tests.

call.id is reused for every Codex proxy inner posix op, so a
session-lifetime uniqueness set muted later JSONL records and
reset() could not recover. Middleware now consumes the prior
verdict and decides only on a cache miss.
A reused Codex proxy id could apply an outer shell allow to an
inner run_shell deny. Consume a cached verdict only when name
and arguments match as well as id.
@TheGreatAxios
TheGreatAxios merged commit a9fe428 into main Sep 10, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant