bug(sessions): one failing managed-skill reconcile stops every agent from starting #1133
Description
Expected
A problem with a managed skill (TLDR or Goal) should affect only that skill. The agent should still start, and the user should see which skill is broken and where to fix it.
Actual
src/main/sessionManager.ts runs the conventions reconcile before every spawn. If it throws and the session has a reporting domain (TLDR or Goal, which almost every pane has), the error is rethrown and the spawn aborts:
this.journal?.recordError('conventions.pre_spawn_reconcile.error', error)
if (hasReportingDomain(options.builtInMcpDomains)) throw errorBecause every pane goes through that path, one skill failure means no agent in any provider can start. The pane still restores its transcript, so the workspace looks fine, but nothing is running. The journal then records recover.failed code=start-failed with no cause.
Evidence (incident journals)
The same gate caused two workspace-wide outages from two unrelated causes:
| Run | Build | Reconcile errors | Message | Cause |
|---|---|---|---|---|
2026-09-18T00-49-30…77c310 |
0b744b88 (before grok) |
17 | TLDR skill deployment failed |
unknown, the journal records no reason |
2026-09-19T04-09-36…9e113a |
post-#844 | 15 | TLDR skill is unavailable or conflicts… |
#1014 (fixed in #1017) |
2026-09-19T04-13-05…fddcd2 |
post-#844 | 15 | same | #1014 |
In the Sept 19 runs, every reconcile error is followed at seq+1 in the same millisecond by recover.failed: 15 of 15 and 14 of 14. The Sept 18 cluster happened on a build that predates grok, so #1017 did not fix it, and its reason is lost.
#1014 and #1037 fixed specific ways a skill could fail. This issue is about the blast radius: any future cause, like a conflicted file, a failed deployment, or a discovery error, will take down every pane the same way.
Impact
Every agent fails to start on every launch until someone opens Settings, and nothing says where to look. It happened twice in two days.
Fix direction
- On a reconcile failure, launch the agent without the managed skill and show a visible warning that names the skill and points to Settings. The TLDR and Goal MCP tools still carry their own server instructions, so the session keeps most of the capability.
- Give
recover.faileda typed cause, such asconventions-gate,provider-launch, ormissing-workspace, so the journal says why a start failed.
Refs #1014
Activity
fix(sessions): pre-spawn skill warning is joinable, cancel-safe and t…