Problem, in two halves
Field state on a real Tower (found via #1722's repro): 25 held rows with reason no-live-pty, workspace $HOME, newest 2026-09-04 — three weeks old, left by a long-gone architect session run from the home directory. Tower-wide held total is 28.
- Held rows from a dead PTY never resolve. A
no-live-pty hold means "deliver when the recipient's terminal comes back" — but a recipient that will NEVER come back (session long dead, workspace was a home-dir accident) leaves rows that sit indefinitely: never delivered, never expired, never escalated to a terminal disposition. They pin heldCount/mailboxEscalated on every unscoped surface forever.
- Workspace-scoped
afx inbox cannot see them. Inbox shows only the current workspace, so mail held under any other path is invisible to the CLI a user would naturally reach for — the global badge says 25, every repo's inbox says 0, and nothing bridges the two.
Fix shape (hypothesis, for the builder to validate)
For (2), cheap and immediate: afx inbox prints a one-line hint when OTHER workspaces hold mail — "N more held in other workspaces (afx inbox --all to list)" — plus an --all (or --workspace <path>) listing. Metadata-only redaction rules unchanged.
For (1), a disposition policy for undeliverable holds, decided deliberately rather than by silence:
Related
Problem, in two halves
Field state on a real Tower (found via #1722's repro): 25 held rows with reason
no-live-pty, workspace$HOME, newest 2026-09-04 — three weeks old, left by a long-gone architect session run from the home directory. Tower-wide held total is 28.no-live-ptyhold means "deliver when the recipient's terminal comes back" — but a recipient that will NEVER come back (session long dead, workspace was a home-dir accident) leaves rows that sit indefinitely: never delivered, never expired, never escalated to a terminal disposition. They pinheldCount/mailboxEscalatedon every unscoped surface forever.afx inboxcannot see them. Inbox shows only the current workspace, so mail held under any other path is invisible to the CLI a user would naturally reach for — the global badge says 25, every repo's inbox says 0, and nothing bridges the two.Fix shape (hypothesis, for the builder to validate)
For (2), cheap and immediate:
afx inboxprints a one-line hint when OTHER workspaces hold mail — "N more held in other workspaces (afx inbox --all to list)" — plus an--all(or--workspace <path>) listing. Metadata-only redaction rules unchanged.For (1), a disposition policy for undeliverable holds, decided deliberately rather than by silence:
afx inbox --dismiss-staleor equivalent).Related