Repository navigation
Approvals: no answer in two minutes is a no - #387
Merged
Merged
Conversation
A prompt nobody answered held the task until someone came back. Now it waits two minutes, counting down in the status line, then denies the call and lets the run go on without it. Only an explicit yes runs anything. The timeout is not an answer: the risk model learns nothing from it, and a panel open over the prompt stays open. The plain prompt runs out the same way, and its stdin read gives up with it so the next line goes to the REPL. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
If your organization's extra usage balance is empty, an organization admin can add extra usage credits at claude.ai/admin-settings/usage. If its monthly spend limit was reached, an admin can raise it on the same page. If neither applies, contact Anthropic support.
Once extra usage is available, someone with write access to this repository can comment @claude review on this pull request to trigger a review.
- An expired prompt finalizes a task that finished behind it only when it was the modal: one behind a panel waits for the panel to close. - A stdin read whose reader gave up returns instead of waiting for a reply that never comes — one leaked goroutine per expired prompt. - A prompt asked after esc is not shown: the tool already has its no, and an answer or a countdown on it meant nothing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
After esc dropped back to typing, a task that had finished behind the prompt was left unfinalized when the prompt ran out, and the view sat on "running" with nothing behind it. It is now finalized unless a panel is open over it. esc also denies the prompt it drops outright: one asked before the current task began holds an earlier abort signal that Abort never closes, and its tool waited forever. The panel's "approval waiting" line shows the countdown too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
A prompt nobody answered held the task until someone came back. Now it waits two minutes, with a countdown in the status line, then denies the call and the run carries on without it. Only an explicit yes runs anything.
ApproveAnsweredreturns(false, false). A timeout is nobody's judgement, so the risk model learns nothing from it. A panel open over the prompt stays open, and the approval reader is re-armed for the next one.Tests:
cmd/agent/approval_timeout_test.go. A sabotage pass ran 9 mutations: never expire, expire early, bridge ignores expiry, timeout counted as an answer, timeout says yes, reader not re-armed, panel closed, plain prompt never times out, plain read outlives the deadline. Each one failed a test.Review fixes (codex, muse, devin):
Left as is: a line typed in the same instant the deadline fires can be dropped. It is a microsecond window and resolves to deny either way.
🤖 Generated with Claude Code