# \[Bug\]: Steering into a turn waiting on Claude's AskUserQuestion leaves a stale question that can't be answered · Issue \#15517 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/issues/15517)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

State: backlog

Priority: 0

## Description

[Discussion and activity](https://git.cafe/pingdotgg/t3code/issues/15517)

---

### Before submitting

- [x] I searched existing issues and did not find a duplicate.
- [x] I included enough detail to reproduce or investigate the problem.

### Area

apps/server

### Steps to reproduce

1. Start a Claude thread: "Run the shell command `sleep 30` in the foreground. When it finishes, use the AskUserQuestion tool to ask me which color to pick, with the options "Red" and "Blue". After I answer, quote my answer exactly."
2. While the command runs, type a follow-up and press Enter. With the default follow-up behaviour it is queued.
3. When the question appears, click **Steer** on the queued message.
4. Answer the question that is shown first.

### Expected behavior

The question Claude gave up on closes in T3 Code, so only the question Claude is waiting on is shown, and answering it reaches Claude.

### Actual behavior

The steer aborts the pending tool permission request. The SDK returns `tool_result` "Tool permission request aborted" (`is_error`), Claude reads the steered message and asks the same question again as a new request. T3 Code keeps the aborted request `pending`, so the thread shows two questions. Answering the stale one marks it resolved, but the server logs `No pending Claude runtime request …`, Claude never gets the answer, and the real question still waits. Nothing tells the user.

In `ClaudeAdapterV2.ts`, the `AskUserQuestion` branch of the permission callback races the answer against the abort signal. On abort it removes the request from `pendingRuntimeRequests` and returns `deny`, but it emits no `runtime_request.updated` that cancels the request, so the projection never leaves `pending`.

### Impact

Minor bug or occasional failure

### Version or commit

`upstream/main` at `ee7b49d638`, dev desktop app

### Environment

macOS 27, T3 Code dev desktop app, Claude Fable 5.1 through the Claude Agent SDK

### Logs or stack traces

Provider events for the thread (trimmed):

```
05:45:16.671 outgoing prompt.offer {"content":"PROBE2: queued before the question, steered while it is pending.","priority":"now"}
05:45:16.704 incoming tool_result {"content":"Tool permission request aborted","is_error":true,"tool_use_id":"toolu_0149MNMxsZ7jF7UxaZcK6of1"}
05:45:21.016 incoming assistant thinking: "…the color question got aborted before you answered… I'll ask it again."
05:45:21.023 incoming tool_use AskUserQuestion toolu_01E98pK64FFo5cdGAAHhgMgk
```

`orchestration_v2_projection_runtime_requests` afterwards: both `toolu_0149…` and `toolu_01E9…` are `user_input` / `pending`. After answering the first: `toolu_0149…` resolved, and `server.trace.ndjson` holds five `No pending Claude runtime request runtime-request:…toolu_0149…` failures.

### Related

- #11116: found while verifying the fix, where a message can be sent while a question is pending.
- #14496 (open) reports failed answer deliveries, which would make the stale answer visible but would not close the aborted request.

Claude Opus 5.5 via T3 Code

