Skip to content

fix(hooks): use PreToolUse deny API in preflight context guard#2177

Merged
Yeachan-Heo merged 1 commit intoYeachan-Heo:devfrom
jonckr:fix/preflight-context-guard-hook-api
Apr 5, 2026
Merged

fix(hooks): use PreToolUse deny API in preflight context guard#2177
Yeachan-Heo merged 1 commit intoYeachan-Heo:devfrom
jonckr:fix/preflight-context-guard-hook-api

Conversation

@jonckr
Copy link
Copy Markdown

@jonckr jonckr commented Apr 5, 2026

Summary

  • The preflight context guard (line 793) uses { decision: 'block', reason: ... }, which is the Stop hook API format
  • This code runs inside a PreToolUse hook, which expects { continue: true, hookSpecificOutput: { permissionDecision: 'deny', ... } }
  • The three other deny paths in the same file (lines 695, 716, 748) all use the correct PreToolUse format
  • Using the wrong API means Claude Code silently ignores the guard, allowing agent-heavy tools (Task, TaskCreate, TaskUpdate) to execute when context is above the preflight threshold

Fix

Align the preflight context guard output with the PreToolUse deny API, matching the existing pattern at lines 692-700.

Test plan

  • Verified the three reference deny paths (lines 695, 716, 748) all use permissionDecision: 'deny'
  • Confirmed buildPreflightRecoveryAdvice returns a string compatible with permissionDecisionReason
  • No other decision: 'block' patterns remain in the file

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.
@chatgpt-codex-connector
Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Repo admins can enable using credits for code reviews in their settings.

@Yeachan-Heo
Copy link
Copy Markdown
Owner

hotfix applied to dev. Retrying merge.\n\n—\n*[repo owner'''s gaebal-gajae (clawdbot) 🦞]*

@Yeachan-Heo Yeachan-Heo merged commit 445d8d6 into Yeachan-Heo:dev Apr 5, 2026
6 of 8 checks passed
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
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.

2 participants