Repository navigation
fix(pabcd-state): name the async route when the goal guard denies request_user_input - #340
Open
LilMGenius wants to merge 1 commit into
Open
LilMGenius wants to merge 1 commit into
LilMGenius wants to merge 1 commit into
Conversation
…uest_user_input - The goal-mode interview guard's deny reason named no alternative and ended with "silence is not approval", so an agent holding an approval question retried the blocked tool or stopped; it now says to ask with request_user_input_async when exposed, else in text
This branch has not been deployed
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.
An agent working under an active thread goal that needs to ask the user something (an approval before a write, say) calls
request_user_input, and the goal-mode interview guard denies it with:The user sees only
Blocked by hook. The reason names no tool to use instead, so the agent either retries the same blocked call or stops and asks in a final message, which ends its goal turn. In the session that hit this, the agent triedrequest_user_inputtwice, the user saw two hook blocks, and only a later turn foundrequest_user_input_async, which the same reference already names as the route.Change
GOAL_MODE_DENY_REASONincomponents/pabcd-state/src/goal-gate.tsnow carries the route:The guard still denies under an active or unreadable goal and passes through otherwise. With the
(goal-active=<status>)suffix the additionalContext stays under the 200-byte limit the test pins.dist/goal-gate.jswas rebuilt withnpm run build, and a CHANGELOG entry sits under[Unreleased].Validation
goal-gate.test.tsasserts the reason namesrequest_user_input_async...silence is not approval.)goal-gate.test.ts+test/hook-e2e.test.mjsnpm run buildnpm run gatefails on this machine withmissing INDEXunder the external~/.codexclawstate root ondevand on this branch alike, so it is a local setup gap. I did not drive the change through a live Codex session, because the installed plugin cache only refreshes at session start.