Skip to content

fix(server): queue Copilot follow-ups without killing background agents - #26715

Merged
shivamhwp merged 2 commits into
mainfrom
issue-watch/26695
Oct 29, 2026
Merged

shivamhwp merged 2 commits into
mainfrom
issue-watch/26695

Conversation

@shivamhwp

@shivamhwp shivamhwp commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Steering a Copilot thread interrupts its prompt and kills its native background agents. This change queues Copilot follow-ups until the current prompt finishes, so background work survives and the follow-up runs afterward.

Copilot's ACP adapter now reports that interrupt-and-restart steering is unsupported. The server uses the existing durable queue when a provider supports queueing but cannot steer safely. Other ACP providers keep their current capabilities. Stop remains available. Explicit Restart through t3_thread_send now reports unsupported for Copilot because the existing restart policy uses the same capability; use Stop followed by a new message when cancellation is intended.

The reporter was on macOS. The Copilot capability override in makeAcpRegistryAdapterV2 and the queue decision in resolveMessageDispatchIntent have no OS-specific branch. The orchestrator applies this decision before provider effects run, so the corex composer verification exercises the same cancellation prevention on macOS. Web, desktop and mobile send through EnvironmentCommands.startThreadTurn and CommandPolicy.resolveMessageDispatchIntent; their queue views use deriveThreadQueueWorkflowState from packages/client-runtime/src/state/threadWorkflows.ts.

Closes #26695

Client evidence

Captured in the real web client on corex with isolated development state and official Copilot CLI 1.0.105 over ACP. Before: main 7632c3dc7039953cc50282e1bc339e1bf11f2ffc. After: this PR's head e313525eccea0fe85d8dad6a80563835032c2787. Both used gpt-6-luna; Copilot also routed the native child to Luna. A transparent ACP proxy recorded protocol milestones without changing the messages. The source servers ran with vp run dev --home-dir <isolated-home> --no-seed, and the web clients used the same-origin Vite proxy.

The reporter's prompt was sent through the composer:

Launch ONE background agent (task tool, mode background) that runs sleep 90; echo BG_DONE. Then run sleep 40 yourself in the foreground, then reply DONE.

While the background shell was running, the composer sent: "After the background agent completes, reply FOLLOWUP_DONE."

Before, the follow-up cut off the current attempt. Copilot cancelled its background agent 18 seconds into the 90-second shell command. The earlier completed turn above it is a separate attempt without a follow-up. Copilot later restarted background work to answer the follow-up; the original child was cancelled.

Before: the default Steer follow-up cuts off the active attempt

After, the follow-up stays queued below the running background agent instead of interrupting it.

After: the follow-up stays queued while the background agent runs

The background shell then finishes with BG_DONE, and the queued follow-up completes with FOLLOWUP_DONE.

After: background work and the queued follow-up both complete

The ACP transcript confirms what the client shows. Times are UTC on 2026-10-29.

Before, main 7632c3d:
05:28:11.819  subagent.started
05:28:17.567  background shell started
05:28:35.781  session/cancel
05:28:35.800  subagent.completed cancelled:true
05:28:35.833  first prompt result: cancelled
05:28:36.028  follow-up prompt started

After, head e313525:
05:33:19.616  subagent.started
05:33:26.506  background shell started
               composer follow-up queued while the shell ran
05:34:56.602  background shell completed, exit 0, BG_DONE
05:35:00.827  subagent.completed, gpt-6-luna
05:35:08.703  first prompt result: end_turn
05:35:10.103  queued follow-up prompt started
05:35:12.617  follow-up result: end_turn, FOLLOWUP_DONE

The fixed run recorded zero session/cancel and abort events. Both prompts completed successfully.

Verification

The branch was updated with main 3748c5c241a2740f2e0856e2c2a3f9d8ee7ff8e9 in merge commit fdfe353eb0723d53d6772b9f7ad79d08432cc531. All five files in this fix are identical to e313525eccea0fe85d8dad6a80563835032c2787, so the client captures and local command output still cover the unchanged fix.

The client captures and runtime transcript above cover head e313525eccea0fe85d8dad6a80563835032c2787. No new setting, UI, contract or protocol change is included.

The following commands ran on corex against that committed head. Each PNG renders the full captured text log, including the full SHA, command, timestamps, result and exit code.

Three focused suites, 49 tests, captured command output
Five neighboring suites, 99 tests, captured command output
Changed-file checks, captured command output

Recorded results:

Head: e313525eccea0fe85d8dad6a80563835032c2787
Focused command: vp test run src/orchestration-v2/CommandPolicy.test.ts src/orchestration-v2/Adapters/AcpRegistryAdapterV2.test.ts src/orchestration-v2/SteeringCompletion.integration.test.ts
 Test Files  3 passed (3)
      Tests  49 passed (49)
Exit code: 0

Neighbor command: vp test run src/orchestration-v2/ClaudeAutomaticDelivery.integration.test.ts src/orchestration-v2/ThreadLaunchService.test.ts src/orchestration-v2/testkit/ProviderSwitch.integration.test.ts src/orchestration-v2/OpenCode2OrchestratorV2.integration.test.ts src/orchestration-v2/DispatchModeLimit.test.ts
 Test Files  5 passed (5)
      Tests  99 passed (99)
Exit code: 0

$ vp run check:changed origin/main
check:changed: 5 files since 5b89a5358562
Nothing changed since the last passing run.
check:changed summary
  pass  format  0.5s
  pass  lint  1.4s
  pass  knip 1/2  15.7s
  pass  knip 2/2  26.9s
  pass  graphql (apps/server)  1.1s
  pass  typecheck (10 packages)  16.4s
  pass  test (3 files)  60.0s
Exit code: 0

The focused suites cover Copilot capability identification, explicit and automatic dispatch resolution, and queued delivery without interruption. The neighboring suites cover automatic delivery, thread launch, provider switches, OpenCode dispatch and dispatch limits.

vp run check:changed origin/main validated its existing passing result for unchanged inputs and exited 0. Its output explicitly reports cache reuse, with successful format, lint, both knip passes, GraphQL generation, typechecking of 10 affected packages and the three touched test files.

CI output for this head passed Check, Test, all eight server shards, Test Web, and Build and Typecheck. Independent GPT-6.1 Sol review found no blocking correctness findings; its request to disclose the explicit Restart limitation is addressed above.

Implemented by Opus 5.5 with Claude Code. Investigated, tested and reviewed by GPT-6.1 Sol with Codex.

Steering a GitHub Copilot ACP turn sent session/cancel and a new prompt,
and cancelling a Copilot prompt also kills the background agents it
started. Copilot now advertises no interrupt-restart steering, and a
steer aimed at a live run whose provider can neither steer nor restart
waits in the queue until that turn ends. Explicit restarts are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Oct 28, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs Human Approval

Macroscope's review found this PR requires human approval — Copilot follow-ups will queue instead of interrupting and restarting active work, preserving background agents but delaying redirection. This changes existing delivery behavior and requires a human decision on that product-default tradeoff.

No code changes detected at fdfe353. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 5.0 KiB 5.0 KiB +29 B (+0.6%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.2 KiB 1.2 KiB +29 B (+2.3%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 21.5 KiB 21.6 KiB +41 B (+0.2%) 24.4 KiB ✅
Codex Live turn messages 1 2 +1 (+100.0%) 8 ✅
Claude Total thread wire 5.0 KiB 5.1 KiB +6 B (+0.1%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.3 KiB 1.3 KiB +6 B (+0.5%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.9 KiB 21.9 KiB 0 B (0.0%) 24.4 KiB ✅
Claude Live turn messages 2 2 0 (0.0%) 8 ✅

Baseline: 3748c5c · PR result: fdfe353 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@coderabbitai

coderabbitai Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between d464631 and e313525.

Files selected for processing: 5
  • apps/server/src/orchestration-v2/Adapters/AcpRegistryAdapterV2.test.ts
  • apps/server/src/orchestration-v2/CommandPolicy.test.ts
  • apps/server/src/orchestration-v2/CommandPolicy.ts
  • apps/server/src/orchestration-v2/SteeringCompletion.integration.test.ts
  • packages/provider-acp-registry/src/server/adapter.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

Walkthrough

The ACP Registry adapter disables interrupt-and-restart steering for Copilot. Dispatch policy queues messages for active runs when the provider supports neither steering mode but supports queued messages. Regression tests cover capability reporting, dispatch decisions, and queued follow-up execution.

Changes: Copilot Follow-up Dispatch

Layer / File(s) Summary
Copilot turn capabilities
packages/provider-acp-registry/src/server/adapter.ts, apps/server/src/orchestration-v2/Adapters/AcpRegistryAdapterV2.test.ts
The adapter disables interrupt-and-restart steering for Copilot. Tests check Copilot and Gemini turn capabilities.
Active-run dispatch policy
apps/server/src/orchestration-v2/CommandPolicy.ts, apps/server/src/orchestration-v2/CommandPolicy.test.ts
Shared helpers identify active runs and resolve provider turn capabilities. When an active run supports neither steering mode and queued messages are supported, dispatch queues the message. Tests cover queueing, restart behavior, and a missing explicit target.
Queued follow-up execution
apps/server/src/orchestration-v2/SteeringCompletion.integration.test.ts
The integration test verifies that a follow-up stays queued during the active turn, does not steer or interrupt it, and starts as a new turn after the current turn completes.

Priority: Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix · Severity of issue fixed: Low

Possibly related issues

  • Issue 26695 describes Copilot background agents being cancelled when a follow-up uses interrupt-and-restart steering. This change disables that steering capability for Copilot and queues follow-ups when the provider cannot steer.

Possibly related PRs

  • pingdotgg/t3code#25749: Both changes adjust message dispatch and queued follow-up behavior based on whether a provider turn is running.
  • pingdotgg/t3code#22802: Both changes define delivery behavior for messages sent during active work.
  • pingdotgg/t3code#25035: Both changes address steer-versus-queue behavior for messages that cannot be steered.

Suggested labels: bugfix

Suggested reviewers: t3dotgg, juliusmarminge

Merge Risk: Minimal · up to e3135

No merge-blocking regression was identified in the queued follow-up change.

Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: queueing Copilot follow-ups to prevent background agents from being cancelled.
Linked Issues check Passed Issue [#26695] requires Copilot follow-ups to reach Copilot without cancelling native background agents. packages/provider-acp-registry/src/server/adapter.ts identifies registry and local Copilot co…
Out of Scope Changes check Passed The changed source, policy logic, and regression tests directly support issue [#26695]. The Copilot capability change prevents destructive cancellation. The dispatch change selects the existing durabl…
Description check Passed The pull request description covers the problem, expected behavior, implementation changes, scope, linked issue, verification steps, observed results, platform limitations, and agent disclosure. The s…
Full details: Linked Issues check

Explanation

Issue [#26695] requires Copilot follow-ups to reach Copilot without cancelling native background agents. packages/provider-acp-registry/src/server/adapter.ts identifies registry and local Copilot commands and disables interrupt-and-restart steering. apps/server/src/orchestration-v2/CommandPolicy.ts queues active-run messages when the provider supports queued messages but supports neither safe steering method. The added integration test verifies that the follow-up remains queued, does not interrupt the current turn, and starts after completion. The capability and policy tests cover Copilot identification and automatic and explicit dispatch resolution.

Full details: Out of Scope Changes check

Explanation

The changed source, policy logic, and regression tests directly support issue [#26695]. The Copilot capability change prevents destructive cancellation. The dispatch change selects the existing durable queue. The tests verify the required behavior and preserve provider-specific capability behavior. No unrelated product, client, protocol, or UI changes appear in the reviewed scope.

Full details: Description check

Explanation

The pull request description covers the problem, expected behavior, implementation changes, scope, linked issue, verification steps, observed results, platform limitations, and agent disclosure. The scope section does not include an explicit maintainer approval comment, but it links the triaged issue and clearly explains why the focused bug fix stays within scope.

Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@shivamhwp
shivamhwp merged commit 9acb769 into main Oct 29, 2026
33 checks passed
@shivamhwp
shivamhwp deleted the issue-watch/26695 branch October 29, 2026 12:07
tripplyons pushed a commit to tripplyons/t3code that referenced this pull request Oct 29, 2026
…ts (pingdotgg#26715)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 29, 2026
**v0.1.5** · 25 changes from 5 contributors

## Highlights
Turn a No project thread into a project. Use Claude and GPT models and thinking controls with Antigravity. Customize thread details, including usage limits. Switch all your installations between Stable and Nightly in one step.

## Fixes
- New threads avoid providers that just hit usage limits (#26234)
- Guest links no longer expose file diffs (#26538)
- Claude edits open as diffs, not raw JSON (#26529)
- Fixed a desktop security vulnerability in Brotli decompression (#26348)
- Undo notices no longer cover threads (#26874)
- Antigravity file reads no longer show unrelated errors (#26910)
- T3 starts on fresh Ubuntu servers without libatomic (#26912)
- Update everything no longer unnecessarily waits for npm (#26917)
- Antigravity file reads no longer keep spinning (#26928)
- Copilot follow-ups no longer kill background agents (#26715)

<details>
<summary>Full changelog</summary>

## What's Changed
* fix(server,cursor,opencode): refresh provider usage when a turn hits its usage limit by @maria-rcks in pingdotgg/t3code#26234
* fix(web): keep tool groups collapsed after a usage-limit pause by @shivamhwp in pingdotgg/t3code#24937
* fix(mobile): photo-library PNGs no longer fail after resizing by @shivamhwp in pingdotgg/t3code#26522
* fix(server): guest links no longer return file diffs by @nexxeln in pingdotgg/t3code#26538
* fix(claude): Open diff shows Claude edits as a diff instead of raw JSON by @nexxeln in pingdotgg/t3code#26529
* chore: vouch nexxeln by @t3dotgg in pingdotgg/t3code#26812
* feat(web): Labs toggle keeps 5h, weekly, and context limits in view by @t3dotgg in pingdotgg/t3code#26859
* fix(desktop): bump Electron to 44.10.0 for the Node.js Brotli fix (CVE-2026-111497) by @nabettu in pingdotgg/t3code#26348
* chore: make agent mistakes fail early by @t3dotgg in pingdotgg/t3code#26167
* feat(marketing): hero shows four agents running at once by @t3dotgg in pingdotgg/t3code#26875
* fix(web): undo notice moves to the sidebar footer so it never covers a thread by @t3dotgg in pingdotgg/t3code#26874
* feat: turn a No project thread into a project by @t3dotgg in pingdotgg/t3code#26767
* feat(antigravity): Claude and GPT models, thinking levels, and diff edits by @t3dotgg in pingdotgg/t3code#26876
* feat(web): choose what the thread details card shows by @t3dotgg in pingdotgg/t3code#26904
* feat(updates): switch your whole fleet between Stable and Nightly in one step by @t3dotgg in pingdotgg/t3code#26288
* fix(antigravity): file reads no longer show unrelated errors by @t3dotgg in pingdotgg/t3code#26910
* feat(release): release notes and the update popover open with a short note by @t3dotgg in pingdotgg/t3code#26893
* fix(cli): t3 starts on a fresh Ubuntu server without libatomic by @t3dotgg in pingdotgg/t3code#26912
* fix(web): update everything no longer waits on npm for service hosts by @t3dotgg in pingdotgg/t3code#26917
* test(web): pin the npm wait floor for update everything by @t3dotgg in pingdotgg/t3code#26921
* fix(antigravity): served reads stop spinning and duplicate model names are labeled by @t3dotgg in pingdotgg/t3code#26928
* fix(server): queue Copilot follow-ups without killing background agents by @shivamhwp in pingdotgg/t3code#26715
* fix(web): Antigravity effort no longer shows a speedometer in the composer by @t3dotgg in pingdotgg/t3code#26929
* fix(release): Linux CLI archives build on runners without package docs by @t3dotgg in pingdotgg/t3code#26932


**Full Changelog**: pingdotgg/t3code@v0.1.4...v0.1.5

</details>


Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.5
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 29, 2026
**v0.1.5-nightly.20261029.3877** · 10 changes from 2 contributors

## Highlights
Switch your servers and desktop apps between Stable and Nightly together. Release notes now open with a concise summary.

## Fixes
- Antigravity file reads no longer show unrelated errors (#26910)
- T3 starts on fresh Ubuntu servers without libatomic (#26912)
- Update everything no longer skips background-service hosts (#26917)
- Antigravity file reads no longer spin until completion (#26928)
- Duplicate Antigravity model names are distinguishable (#26928)
- Copilot follow-ups no longer kill background agents (#26715)

<details>
<summary>Full changelog</summary>

## What's Changed
* feat(updates): switch your whole fleet between Stable and Nightly in one step by @t3dotgg in pingdotgg/t3code#26288
* fix(antigravity): file reads no longer show unrelated errors by @t3dotgg in pingdotgg/t3code#26910
* feat(release): release notes and the update popover open with a short note by @t3dotgg in pingdotgg/t3code#26893
* fix(cli): t3 starts on a fresh Ubuntu server without libatomic by @t3dotgg in pingdotgg/t3code#26912
* fix(web): update everything no longer waits on npm for service hosts by @t3dotgg in pingdotgg/t3code#26917
* test(web): pin the npm wait floor for update everything by @t3dotgg in pingdotgg/t3code#26921
* fix(antigravity): served reads stop spinning and duplicate model names are labeled by @t3dotgg in pingdotgg/t3code#26928
* fix(server): queue Copilot follow-ups without killing background agents by @shivamhwp in pingdotgg/t3code#26715
* fix(web): Antigravity effort no longer shows a speedometer in the composer by @t3dotgg in pingdotgg/t3code#26929
* fix(release): Linux CLI archives build on runners without package docs by @t3dotgg in pingdotgg/t3code#26932


**Full Changelog**: pingdotgg/t3code@v0.1.5-nightly.20261029.3873...v0.1.5-nightly.20261029.3877

</details>


Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.5-nightly.20261029.3877
adampeterhiggins added a commit to adampeterhiggins/t3code that referenced this pull request Oct 30, 2026
* feat(antigravity): Claude and GPT models, thinking levels, and diff edits (pingdotgg#26876)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(web): choose what the thread details card shows (pingdotgg#26904)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(updates): switch your whole fleet between Stable and Nightly in one step (pingdotgg#26288)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(antigravity): file reads no longer show unrelated errors (pingdotgg#26910)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(release): release notes and the update popover open with a short note (pingdotgg#26893)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(cli): t3 starts on a fresh Ubuntu server without libatomic (pingdotgg#26912)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): update everything no longer waits on npm for service hosts (pingdotgg#26917)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* test(web): pin the npm wait floor for update everything (pingdotgg#26921)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(antigravity): served reads stop spinning and duplicate model names are labeled (pingdotgg#26928)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): queue Copilot follow-ups without killing background agents (pingdotgg#26715)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): Antigravity effort no longer shows a speedometer in the composer (pingdotgg#26929)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(release): Linux CLI archives build on runners without package docs (pingdotgg#26932)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): reconnecting notice no longer shifts the new thread composer (pingdotgg#26958)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(marketing): homepage looks like the app (pingdotgg#26960)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* chore(release): prepare v0.1.5

* fix(cli): restore Windows desktop launcher console input (pingdotgg#24870)

Co-authored-by: Nathan Shan <nathanielcrush51@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>

* feat(settings): add and list 1Password secret providers behind T3CODE_FEATURE_SECRETS (pingdotgg#25709)

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(mobile): use monospace in the Android terminal preview (pingdotgg#23401)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): edit from here uses a pencil icon (pingdotgg#21878)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(desktop): clear Cache Storage when deleting browser profile data (pingdotgg#22002)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): respect reduced motion in thread loading controls (pingdotgg#22100)

Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(provider-acp): redact API keys with underscores in ACP stderr logs (pingdotgg#24015)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(provider-core): redact compound credential keys in provider errors (pingdotgg#23313)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): show rounded diff counts as 1m instead of 1000k (pingdotgg#23723)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(desktop): a timed-out login-shell probe no longer skips the server's PATH repair (pingdotgg#21771)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): keep the previous preview browser version on a shared home (pingdotgg#23771)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(settings): servers check secret provider writes and keep unknown configs to themselves (pingdotgg#27044)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): keep a closed split terminal's tab in view (pingdotgg#22106)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): the ~ breadcrumb opens the home folder (pingdotgg#22412)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(gitlab): accept merge request URLs from self-hosted hosts (pingdotgg#23848)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): commits no longer land on a branch switched in mid-action (pingdotgg#24473)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): image attachments report their size when the T3 home is behind a symlink (pingdotgg#24245)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(ssh): skip directories in config includes (pingdotgg#25187)

Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>

* fix(server): Authorized clients names Edge, Firefox and Opera on phones correctly (pingdotgg#23340)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(mobile): fork rows show a readable label instead of a thread ID (pingdotgg#22064)

Co-authored-by: Jeremiah Jordan <zanson@zanson.org>
Co-authored-by: GPT-6.1-Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(markdown): formulas ending in a comma render (pingdotgg#22883)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(scripts): dev runner expands ~ in --home-dir and T3CODE_HOME (pingdotgg#25560)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(desktop): keep development protocol requests on the configured server (pingdotgg#22010)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(mobile): apply terminal toolbar modifiers to arrow keys (pingdotgg#22161)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): clean old logs and artifacts under a symlinked T3 home (pingdotgg#24097)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): preserve URL arguments in Android device actions (pingdotgg#25205)

Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>

* fix(server): keep terminal history after cancelled sequences (pingdotgg#25193)

Co-authored-by: Aditya Garud <153842990+yashranaway@users.noreply.github.com>

* fix(auth): accept a typed pairing code regardless of letter case (pingdotgg#22089)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): find in thread opens from the thread title menu, so phones can reach it (pingdotgg#22352)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(desktop): resolve executable commands when checking CLI shadowing (pingdotgg#22046)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): SQLite temp files no longer block the event loop (pingdotgg#24194)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): a branch named like a tag no longer reads as heads/<name> (pingdotgg#24258)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): cap generated worktree folder names (pingdotgg#25212)

Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com>

* perf(server): checkpoint capture scans the index listing by record instead of by byte (pingdotgg#21329)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): PR discovery sweeps skip hidden subagent threads (pingdotgg#26983)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(shared): stop parsing CLI flags after -- (pingdotgg#25204)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>

* fix(server): remove abandoned v1 database copies on startup (pingdotgg#25301)

Co-authored-by: Matěj Suchánek <16311043+immakermatty@users.noreply.github.com>

* fix(web): Enter no longer skips an unanswered question (pingdotgg#23626)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): keep wide characters in terminal links (pingdotgg#24013)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): session stops no longer trigger storage sweeps unless a deleted worktree waits (pingdotgg#26038)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(provider-core): subagent threads no longer inherit the parent's pin (pingdotgg#21271)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(device): report failed Android permission changes (pingdotgg#22358)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): thread lists load beyond SQLite variable limit (pingdotgg#25696)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): allow large git status metadata (pingdotgg#25207)

Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>

* perf(mobile): flatten large file trees without copying descendants (pingdotgg#21276)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): show theme conflicts even when another import fails (pingdotgg#23223)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(usage): reject cyclic model mappings before saving (pingdotgg#23963)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(settings): offer Use existing CLI in managed Codex settings (pingdotgg#23160)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(git): honor project provider settings (pingdotgg#23672)

Co-authored-by: Tejas Parmar <parmartejas@vanojay.in>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(desktop): force-close stalled Linux MIME cache helpers (pingdotgg#25210)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>

* fix(cli): auth pairing create rejects a --base-url without http(s):// (pingdotgg#23343)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): signed asset and upload URLs stay out of HTTP traces (pingdotgg#24556)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): clone errors no longer show a token from the URL's query (pingdotgg#24698)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(claude): pass every --add-dir launch directory to Claude (pingdotgg#23281)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(composer): retry expired catalogs after failed discovery (pingdotgg#23174)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(auth): preserve pairing codes after scope rejection (pingdotgg#25222)

Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>

* fix(mobile): discard unchanged queued edits after starting (pingdotgg#25232)

Co-authored-by: Tristan Knight <18444302+tris203@users.noreply.github.com>

* fix(server): t3 project commands wait for a busy server's reply (pingdotgg#24090)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): wait for fresh diff pages in review guides (pingdotgg#23225)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): Antigravity stops retrying session startup while signed out (pingdotgg#24939)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): create tasks on a permitted connected environment (pingdotgg#23244)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(mobile): recognize this thread's main checkout (pingdotgg#23764)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): keep usage hubs that share a host (pingdotgg#23767)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(github): read text and mixed-case pull request templates (pingdotgg#25025)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>

* fix(web): keep HTML prototype selection rings visible (pingdotgg#23745)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(mobile): list pull request repositories once per environment (pingdotgg#25219)

Co-authored-by: Tristan Knight <18444302+tris203@users.noreply.github.com>

* fix(shared): Open in Zed prefers zeditor over the ZFS zed on Linux (pingdotgg#23416)

Signed-off-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com>
Co-authored-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): native Codex subagents no longer show the parent's reasoning effort (pingdotgg#24467)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): mark unread works after an automatic compaction (pingdotgg#25286)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): show MCP App forms from failed tool results (pingdotgg#25225)

Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>

* fix(server): restore Linux session display for editor launches (pingdotgg#25228)

Co-authored-by: Inaya Yousfi <193243337+inayayousfi@users.noreply.github.com>

* fix(usage): keep host identity across container recreation (pingdotgg#25220)

Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>

* fix(opencode): authenticate with the resolved server password (pingdotgg#25230)

Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* feat(web): allow resizing the file explorer (pingdotgg#25737)

Co-authored-by: Rishabh Bothra <37180068+07rjain@users.noreply.github.com>

* fix(server): update shared Codex installs from their owning home (pingdotgg#25235)

Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>

* fix(cli): keep published runtimes in place during installation (pingdotgg#24092)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): right panel launcher letters work on non-Latin keyboard layouts (pingdotgg#21508)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): report a deleted or replaced ownership lock (pingdotgg#21886)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): mark unread no longer brings back a dismissed wake (pingdotgg#24080)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(mobile): stop refreshes in hidden PR Guide panes (pingdotgg#25486)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(desktop): installing the t3 command no longer reports its own launcher as another t3 (pingdotgg#22375)

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* test(mobile): load the branch occupancy test without native sources (pingdotgg#27063)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(settings): project edits keep overrides the client does not know (pingdotgg#24472)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(client): retry the permissions check after a reconnect (pingdotgg#27008)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(mobile): tab bar spans the screen on iOS before 26 (pingdotgg#27089)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): thread recovery reads are 10x faster (pingdotgg#27099)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): source control discovery no longer stalls up to 10s on Bitbucket (pingdotgg#27102)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf: huge checkpoints ship up to 75x smaller to clients (pingdotgg#27110)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): sidebar shell loads 3x faster and startup thread counts 80x faster (pingdotgg#27106)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): preparing a run is 15x faster and uses 200x less memory (pingdotgg#27105)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(server): traces name what grew the heap, for ~0.3µs per span (pingdotgg#27104)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(gitcafe): PR sync makes 2x fewer GitCafe requests for unchanged PRs (pingdotgg#27100)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(shared): SQLite reads stop queueing behind each other, up to 5x faster under load (pingdotgg#27097)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): git status runs in parallel and repo detection spawns 3x fewer git processes (pingdotgg#27103)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(client): dead connection routes are probed 30x less often (pingdotgg#27101)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): idle servers run 100x fewer background queries and 4.8M fewer spans a day (pingdotgg#27098)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(devices): support Android EAS Simulator sessions (pingdotgg#26797)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web,mobile): image-only messages show the image, not the placeholder prompt (pingdotgg#26769)

* ci(mobile): production deploys use a Release Manager Expo token (pingdotgg#27285)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* ci(mobile): maintainers can deploy EAS previews for reviewed fork commits (pingdotgg#27292)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): agents yield CPU, tasks, and reclaim to the server under pressure (pingdotgg#27176)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(server): `t3 service protect` keeps the server alive when agents fill memory (pingdotgg#27239)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): held queues release agent and scheduled messages once the thread completes a run (pingdotgg#27221)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): restart continuations retry failed starts and respect a parent's stop (pingdotgg#27222)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Stop during a restart no longer leaves the thread stuck (pingdotgg#27141)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(scripts): bound check:changed concurrency and step time (pingdotgg#27227)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(shared): durations under 10s drop a trailing .0 (pingdotgg#27316)

* feat(web): switch the composer between rich text and Markdown source from a button or mod+/ (pingdotgg#26777)

* fix(server): t3_thread_organize rejects unknown arguments instead of archiving the caller (pingdotgg#26718)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): composer Markdown source button shows the pilcrow again (pingdotgg#27375)

* revert(web): remove the composer rich text toggle button and mod+/ shortcut (pingdotgg#27390)

* fix(server): HTML preview browsers quit when done instead of waiting to be killed (pingdotgg#27224)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(terminal): retain and pace slow fallback process queries (pingdotgg#24640)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): show readable provider runtime failure banners (pingdotgg#24614)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: AdEx-Partners-DE <stark.burns@adexpartners.com>

* fix(gitlab): share merge request reads across detail and checks (pingdotgg#24392)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(usage): count Claude advisor calls under the advisor model (pingdotgg#24139)

* fix(web): name the sidebar logo link T3 Code home (pingdotgg#24209)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): fail Claude turns waiting for unsupported mod input (pingdotgg#24320)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Stop always completes, and an agent that ignores it can be force stopped (pingdotgg#27252)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix: guest links can load earlier turns (pingdotgg#27354)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(ci): repair main after merge burst

Rename leftover fakeProvider to fakePullRequestProvider, replace the removed
encodeScanCache in the advisor usage test, and drop an issue number from a
ClaudeAdapterV2 comment that lint rejects.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): let slow worktree checkouts finish (pingdotgg#23802)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(settings): point provider environment variables at a secret provider (pingdotgg#27115)

Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>

* feat(desktop): back/forward buttons and trackpad swipe navigation (pingdotgg#27430)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(web): review local commits in the Diff pane (pingdotgg#19941)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(relay): show the account's real tunnel cap in T3 Connect settings (pingdotgg#27442)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): streaming replies no longer re-render every visible timeline row (pingdotgg#27420)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(web): streaming replies re-render only their last Markdown block (pingdotgg#27417)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(web): the git actions panel no longer re-renders on every streamed update (pingdotgg#27418)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(web): streamed assistant text re-renders only its own row (pingdotgg#27419)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): `t3 service protect` can ask for your sudo password (pingdotgg#27465)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

---------

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Theo Browne <me@theo.li>
Co-authored-by: t3-code-bot[bot] <269035359+t3-code-bot[bot]@users.noreply.github.com>
Co-authored-by: Nathan Shan <nathanielcrush51@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Victor Vogel <satsdev@only21mil.xyz>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Lakshmi Tanmay <lakshmi@voltcrash.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: tiliakoos <73005126+tiliakoos@users.noreply.github.com>
Co-authored-by: Onkar Pradip Jadhav <118719336+Onkarj012@users.noreply.github.com>
Co-authored-by: MarcoDotIO <Marcus.Arnett10@gmail.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: Jeremiah Jordan <jeremiah@apache.org>
Co-authored-by: Jeremiah Jordan <zanson@zanson.org>
Co-authored-by: Nikita Maximilian Grimm <github@nikitagrimm.de>
Co-authored-by: Aditya Garud <153842990+yashranaway@users.noreply.github.com>
Co-authored-by: Mantas Kantautas <mantas.kantautas@gmail.com>
Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com>
Co-authored-by: Joseph Vidal <135430578+josephv123@users.noreply.github.com>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: Matěj Suchánek <16311043+immakermatty@users.noreply.github.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: luke <97411838+luke2x@users.noreply.github.com>
Co-authored-by: parmartejas <110296251+parmartejass@users.noreply.github.com>
Co-authored-by: Tejas Parmar <parmartejas@vanojay.in>
Co-authored-by: Tristan Knight <18444302+tris203@users.noreply.github.com>
Co-authored-by: Stevan Borus <steva.borus@gmail.com>
Co-authored-by: Pujitha Paladugu <pujitha.rathna@gmail.com>
Co-authored-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com>
Co-authored-by: Koushik_xd <122906171+koushikxd@users.noreply.github.com>
Co-authored-by: oliver <97427849+flamboh@users.noreply.github.com>
Co-authored-by: Inaya Yousfi <193243337+inayayousfi@users.noreply.github.com>
Co-authored-by: Rishabh Bothra <37180068+07rjain@users.noreply.github.com>
Co-authored-by: Marcel Jiron · MarMarLabs <marmar9615@icloud.com>
Co-authored-by: Scott Norteman <snorteman@gmail.com>
Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Gourav Kumar Dhiman <gkrdhiman@gmail.com>
Co-authored-by: Nathan Schroeder <49214985+SchroederNathan@users.noreply.github.com>
Co-authored-by: AdEx-Partners-DE <stark.burns@adexpartners.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
immakermatty added a commit to Lazurio/t3code that referenced this pull request Oct 30, 2026
From v0.1.3 a follow-up steers the running turn by default
(pingdotgg#24718). A steer into a turn that waits on a pending
runtime request aborts the provider's pending callback: Claude steers with
priority "now", a pending AskUserQuestion resolves as cancelled and an
approval as cancel, and the person never sees the question
(#139). #119 guarded only sendToThread's auto
mode; the composer's explicit steer, the auto branch of the delivery intent
and promoting a queued message still steered through it.

The guard now lives in one place, CommandPolicy.resolveMessageDispatchIntent:
while the thread has a pending runtime request, any steer_active becomes
queue_after_active. It covers a steer requested as a delivery intent (auto or
steer) and one requested as a dispatch mode (sendToThread, older clients).
The orchestrator reads the thread with its runtime requests on every
message.dispatch, so no caller has to load them. Promoting a queued message
to a steer checks the same predicate (waitsOnPendingRequest) and puts the
message first in the queue instead, so it runs right after the answer.
Restart is unchanged.

sendToThread's own check from #119 is gone, and
ThreadManagementService.ts is upstream's again; its test resolves the
dispatched mode through the guard, and an explicit steer with a pending
request now queues too. The allowlist trades ThreadManagementService.ts for
CommandPolicy.ts, Orchestrator.ts and their tests, and the user guides for
the composer and the agent CLI say a steer queues while a question waits.

On v0.1.4: upstream renamed stopRunForGoalCommand to
stopRunForQueuedCommand with a required reason (pingdotgg#25837); the guard
passes 'Queued behind a pending request' and stays after the compaction
and /goal branches. pingdotgg#25846 renamed the queued message action to Send
now, and composer.md names it. A delegated task's completion wake, which
v0.1.4's remote delegation can also produce (RemoteDelegation.ts), set
steer_active after the guard, as it did on the v0.1.3 line; it now
steers only while waitsOnPendingRequest is false, and
SteeringCompletion.integration.test.ts queues such a wake behind a
pending request.

On v0.1.5 pingdotgg#26715 queues a steer for a provider that can neither steer
its running turn nor restart it. The overlay's pending-request check
runs before that branch and still holds; the row's
ThreadManagementService test gives its projection empty providerThreads
and providerSessions, which the new branch reads.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M 30-99 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Steering a GitHub Copilot thread kills its running background agents

1 participant