A thread whose pull request waits on someone else can now be snoozed with no wake time, held by pull request watches. The new thread.snooze-until-attention command and the agent's snooze_until_pull_request_needs_attention tool both go through PullRequestWatchReactor.snoozeUntilAttention. It reads each open linked pull request from its host and dispatches the snooze with watches primed from that read, the way a watch pass records it. Nothing the pull request already shows (failing checks, required checks that passed, a conflict) wakes the thread, and anything that changes afterwards does. A watch already on keeps its start, remark cursor, and wake count, so comments after its last read still wake it. The snooze is refused when no linked pull request is open, when one cannot be read, or when the thread's linked pull requests or their watches changed while the host was read. It follows the snooze rules, and an agent's call that lands after the user pressed Stop is refused, like watch_pull_request. A watch pass that began before a snooze primed a pull request reports nothing about it, caches no read of it, and does not count a failed read of it against the watch, so a stale read cannot replace what the snooze recorded, settle the thread on a close the pull request has since undone, let the next pass skip it, or end the watch early. The snooze's own read starts the failure count over, the way a pass's successful read does. A later watch wake brings the thread back and the watch continues. Merging or closing the last watched pull request settles the thread instead of sending the closed note, unless the thread's link snapshots show another linked pull request open, such as one that reopened after its watch ended and so is not watched again. Then the snooze ends with the watch and the agent hears of the close as usual. The orchestrator decides this under the thread lock. While the thread is still at work, the watch reactor leaves the watch and snooze in place and settles it on the first pass after the turn ends. A merge is final, so that pass does not read the host again; a closed pull request can reopen, so each pass reads it again first. Any other way the last watch ends (unwatch, Stop, unlink, settle, archive) ends the snooze, so it can never outlive what could wake it. Waking or pinning the thread clears it too, and a subagent made under such a thread does not inherit it. Usage-limit recovery respects it: the worker's automatic arming records the recovery without replacing the snooze, and an armed continuation waits until the snooze ends. Pull requests only such threads watch are checked every 10 minutes. With the new snoozePullRequestsAwaitingReview setting, agents are told to snooze instead of unwatching when a pull request only waits on review: in the shared runtime instructions when the thread attaches to a provider session, and in watch wakes. Servers advertise the threadSnoozeUntilAttention capability for the command and the setting, because servers from before it already advertise threadSnooze. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
flamboh committed on 10/7/2026, 8:27:56 AMparentb77108b
Checks
- CancelledCheckGitHub
- SkippedTransfer report artifactGitHub
- Cancelled
- SuccessfulLabel PR 6GitHub
- Skipped
- SuccessfulLabel PR sizeGitHub
- SuccessfulCollect PR targetsGitHub
- SuccessfulPrepare PR size configGitHub
- SkippedEAS PreviewGitHub
- CancelledTest Server 1GitHub
- CancelledTest Server 3GitHub
- CancelledNative fingerprint diffGitHub
- CancelledTest WebGitHub
- CancelledBuildGitHub
- CancelledLintGitHub
- CancelledTest Server 5GitHub
- CancelledTest Server 6GitHub
- CancelledTest Server 4GitHub
- CancelledTest Server 2GitHub
- CancelledTypecheckGitHub
- CancelledRustGitHub
- CancelledRelease SmokeGitHub
- CancelledMobile Native ChangesGitHub
- CancelledTestGitHub
- SuccessfulPOST to CursorGitHub
48 files changedLine totals unavailable