Skip to content

bug(sessions): one failing managed-skill reconcile stops every agent from starting #1133

Closed

Description

@Juliusolsson05

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 error

Because 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.failed a typed cause, such as conventions-gate, provider-launch, or missing-workspace, so the journal says why a start failed.

Refs #1014

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions