Repository navigation
Conversation
The PreToolUse question-preference-hook participates in the Agent-SDK canUseTool elicitation flow Conductor uses to render AskUserQuestion. Its presence corrupts that round-trip even when it returns `defer`, so AUQ comes back as [Tool result missing due to internal error] and no options render. Native AUQ works fine in Conductor until this hook is registered — the flakiness the backstop worked around is caused by the backstop itself. Codex is unaffected (it doesn't read settings.json), which is why AUQ breaks in Claude but not Codex on the same workspace. Stop treating a Conductor workspace as an implicit opt-in; fall through to the normal (non-interactive skip) decision so native AUQ keeps working. Explicit opt-in via --plan-tune-hooks / GSTACK_PLAN_TUNE_HOOKS / plan_tune_hooks config still installs the hooks. Refs garrytan#2207
|
Merging to
After your PR is submitted to the merge queue, this comment will be automatically updated with its status. If the PR fails, failure details will also be posted here |
This was referenced Jul 14, 2026
Contributor
|
@philhie Please rewrite setup migration so existing Conductor users also have the problematic hook removed. The current change only prevents future installation and leaves it in the ALREADY_INSTALLED path. |
manhit96
pushed a commit
to manhit96/gstack
that referenced
this pull request
Jul 22, 2026
Round-1 fixer pass against review findings on fix/auq-hook-neutral-passthrough (4c082806). Tests: - empty-stdin case uses expectNoDecision (strict empty stdout; drops dead JSON.parse assertions that were always true when stdout was empty) - add MCP-named AUQ + no preference → expectNoDecision (real failure shape for garrytan#2006/garrytan#2035/garrytan#2292/garrytan#2310) Docs (docs/spikes/claude-code-hook-mutation.md): - restore multi-hook precedence fact: deny > ask > allow (most restrictive wins), keep defer-is-not-pass-through clarification - move "no output" out of permissionDecision values list - mark revised date for the pass-through correction Scope note for PR body: this PR addresses silent pass-through for the hook itself (garrytan#2006/garrytan#2035/garrytan#2292/garrytan#2310). garrytan#2207 Conductor auto-install belongs to garrytan#2208 and is not claimed fixed here. Co-authored-by: dpnascimento <dpnascimento@users.noreply.github.com> Co-authored-by: jacksondc <jacksondc@users.noreply.github.com>
Contributor
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.
Fixes the Conductor + Claude AskUserQuestion breakage described in #2207.
Problem
In Conductor + Claude Code (Agent SDK,
CLAUDE_CODE_ENTRYPOINT=sdk-ts), the plan-tune PreToolUse hookquestion-preference-hookparticipates in Conductor'scanUseToolelicitation flow forAskUserQuestion. Its presence corrupts the round-trip — even when it returnsdefer— so AUQ comes back as[Tool result missing due to internal error]and no options render.Native AUQ works fine in Conductor until this hook is registered. So the "flaky
mcp__conductor__AskUserQuestion" that the v1.58.1.0 Conductor-prose backstop was built to work around appears to be caused by the backstop itself. Codex sessions never read~/.claude/settings.json, so they're unaffected — which is exactly why AUQ breaks in Claude but works in Codex on the same workspace.setupcurrently treats any Conductor workspace as an implicit opt-in for these hooks, so a routine/gstack-upgradesilently plants the breakage.Change
setup: drop the Conductor implicit opt-in for the plan-tune AUQ hooks. A Conductor workspace with no explicit--plan-tune-hooks/GSTACK_PLAN_TUNE_HOOKS/plan_tune_hooksconfig now falls through to the normal non-interactive skip, keeping native AUQ working. Explicit opt-in still installs the hooks for anyone who wants the prose backstop.Minimal, comment-heavy, no behavior change outside Conductor.
Verification
bash -n setuppasses.[Tool result missing due to internal error]; after unregistering them (equivalently: this change → no auto-install), AUQ renders and answers correctly (confirmed 3×).Notes / open questions
VERSION/CHANGELOG.mduntouched since versioning is your release call — happy to add a CHANGELOG entry if you want it in the PR.Environment: gstack v1.58.5.0, Claude Code 2.1.201 (sdk-ts), Conductor/macOS. Regression introduced in v1.58.1.0 (c7ae632).