Persist Archive finished dismissals for provider subagents across restarts #4440
SezginKahraman
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
What are you trying to do?
Clear my subagents track of finished (completed/failed/canceled) provider-owned (Task-tool: Claude/Codex/OpenCode) rows and have that stay cleared — the same way archiving a managed Paseo subagent stays archived.
How do you do it today?
Use Archive finished in the subagents track panel. For provider-owned rows this calls
dismissProviderSubagents→useProviderSubagentStore.getState().hideFromTrack(...), which only adds the ids to an in-memoryhiddenFromTrackSet (packages/app/src/subagents/provider-store.ts). It's documented as intentional indocs/agent-lifecycle.md, under "Subagent accumulation under long-lived parents": "That action hides finished provider-owned rows locally; this presentation state resets when the app restarts."Where does Paseo get in the way?
On a long-running parent agent that fans out a lot of Task-tool subagents, the track fills up with finished rows fast. "Archive finished" is the only cleanup tool for them, but every page reload or app restart wipes the dismissal and they're all back — there's no daemon-side concept of "archived" for a provider subagent to persist against (unlike managed Paseo subagents, which get a real
archivedAtand cascade-archive with the parent). For a long session with frequent reloads/reconnects, I end up re-dismissing the same rows repeatedly.What would the flow look like if it worked for you?
At minimum, a dismissal should survive a reload/restart on the same device — I shouldn't have to redo it every time I reconnect. I don't need it to sync across devices/clients to be useful; that would need a real daemon-side "archived" concept for provider subagents, which is a bigger change with different tradeoffs (extending the protocol, deciding what a provider re-reporting the same subagent id later should do, etc.) — happy to discuss that too if there's appetite, but the smaller local-persistence version solves my actual problem.
What I've already built
I have a working, tested change for the local-persistence version: it wraps
useProviderSubagentStore'shiddenFromTrackinzustand'spersistmiddleware (samecreateValidatedPersistStorage+AsyncStoragepattern already used by the sidebar collapsed-sections store and the workspace service route preferences store), scoped to just that one field so the much largerdescriptors/timelinesmaps stay in-memory only. It's on a branch with tests (including a real write → restart → read round trip against an injectable in-memory storage) and a doc update todocs/agent-lifecycle.mdreflecting the new behavior, being explicit about what it doesn't solve (still local-only, still not pruned against the live provider list). PR opened for reference: #4441 (draft — happy to keep it there until there's agreement this is the right shape, per the PR guidelines).All reactions