fix(hooks): use PreToolUse deny API in preflight context guard#2177
Merged
Yeachan-Heo merged 1 commit intoYeachan-Heo:devfrom Apr 5, 2026
Merged
Conversation
The preflight context guard at line 793 uses `{ decision: 'block' }`,
which is the Stop hook API. This is a PreToolUse hook, so the correct
API is `{ permissionDecision: 'deny' }`. The three other deny paths
in the same file (lines 695, 716, 748) all use the correct format.
Using the wrong API means Claude Code silently ignores the guard,
allowing agent-heavy tools (Task, TaskCreate, TaskUpdate) to execute
even when context is above the preflight threshold.
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
Owner
|
hotfix applied to dev. Retrying merge.\n\n—\n*[repo owner'''s gaebal-gajae (clawdbot) 🦞]* |
Yeachan-Heo
added a commit
that referenced
this pull request
Apr 5, 2026
This restores the pre-jonckr runtime, hook, and team behavior by reverting the five owner-scoped merge commits on top of origin/dev. The rollback stays narrowly focused on the affected source/script surfaces so reviewers can audit the history against the original PRs. Constraint: Owner-directed rollback to pre-jonckr runtime behavior after CI/base-red fallout Constraint: Must revert merge commits #2175 #2176 #2177 #2178 #2179 with mainline parent 1 semantics Rejected: Manual file-by-file rollback | weaker audit trail and easier to miss behavior edges Rejected: Partial rollback that keeps #2177-#2179 fixes | conflicts with the requested rollback scope Confidence: medium Scope-risk: moderate Reversibility: clean Directive: Reassess the reverted hook contract, fd-cleanup, and macOS version-sync behavior before reintroducing any of these changes Tested: npx vitest run src/team/__tests__/tmux-session.test.ts Tested: npx vitest run src/__tests__/pre-tool-enforcer.test.ts src/__tests__/bedrock-lm-suffix-hook.test.ts Tested: npx vitest run src/hooks/persistent-mode/stop-hook-blocking.test.ts Tested: node version consistency check for package/plugin/marketplace versions Tested: npx tsc --noEmit Tested: npm run lint Tested: npm run build Tested: npm pack + local prefix install smoke (`omc --version`, `omc --help`) Not-tested: Full `npm test -- --run` remains red on `src/__tests__/hooks-command-escaping.test.ts` with an unrelated Windows-style plugin-root path failure outside the reverted files Related: PR #2175 Related: PR #2176 Related: PR #2177 Related: PR #2178 Related: PR #2179
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
{ decision: 'block', reason: ... }, which is the Stop hook API format{ continue: true, hookSpecificOutput: { permissionDecision: 'deny', ... } }Fix
Align the preflight context guard output with the PreToolUse deny API, matching the existing pattern at lines 692-700.
Test plan
permissionDecision: 'deny'buildPreflightRecoveryAdvicereturns a string compatible withpermissionDecisionReasondecision: 'block'patterns remain in the file