# feat\(pi\): show extension status in existing controls · PR \#23901 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/pull/23901)

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

Visibility: public

State: open

Source repository: Unavailable fork

Source branch: t3code/pi-status-attached-recovery

Target branch: main

Head commit: c07e70680d2c1f678b48a79ea6a9b3f47fb73fd8

[Discussion and reviews](https://git.cafe/pingdotgg/t3code/pull/23901)

[Commits](https://git.cafe/pingdotgg/t3code/pull/23901/commits?format=markdown)

[Files changed](https://git.cafe/pingdotgg/t3code/pull/23901/diffs?format=markdown)

## Description

---

Pi extensions can publish status text that T3 currently discards. Keep keyed status in the provider session and show it through existing composer banners on web and desktop and the floating control on mobile. Updates replace their key, clears remove it, and idle status does not say "Working."

Statuses survive reusable turn failures and clear when the runtime retires. Metadata updates preserve the idle-release deadline and avoid unnecessary worktree cleanup sweeps. Startup recovery clears retained status from attached dead sessions without restoring detached errors, and the Android informational dialog scrolls long text.

Related: #16045 and #16046. #16061 adds a plugin API on that stack; this PR covers native Pi statuses.

Validation: `check:changed` passed 395 tests and 29 affected package typechecks. Pi 1.4 and isolated web verification cover keyed updates, clears, reconnect persistence, reusable-error retention, updates while failed and runtime retirement. The controls are unchanged by the final server corrections, which were verified through service probes and tests. Service probes preserve the live session snapshot on reuse and keep detached errors from resurfacing through persisted client replay. Mobile UI and Android scrolling were checked from source and types only; neither iOS nor Android was run or captured.

Pi RPC cannot identify late status updates from old extension callbacks after a session switch.

## Before

![Pi status absent](https://pub-b182a4071edc4521829926b34990540b.r2.dev/files/1fad67b0-c59e-456e-b3fe-3e23ba383183/pi-extension-status-before.png)

## After

![Pi status in existing composer](https://pub-b182a4071edc4521829926b34990540b.r2.dev/files/476b4171-79d5-4e52-9eef-bad04cd319fd/pi-extension-status-after.png)

Keyed status update:

https://pub-b182a4071edc4521829926b34990540b.r2.dev/files/5f1c6c64-69fe-4144-ad89-f2b88f31f1ec/pi-extension-status-update.mp4

<sub>Prepared for Wout by <code>gpt-6.1-sol</code> in Codex through T3 Code.</sub>

