ADR-0024 Prong 1 tactical stopgap shipped: per-space launcher wrappers
Why
ADR-0024 Prong 1 (Cowork product extends spaces.json with per-space env injection so PLATFORM_COORDINATION_CHECKOUT routes correctly per Cowork space) is the strategic fix for the env-trampling pattern Sales (2026-05-26-sales-adr-0021-single-global-mcp-config-trampling) and Coaching (2026-05-26-coaching-per-workspace-mcp-env-gap-escalation) documented. It is owed by Cowork product and undated. ADR-0024 Prong 2 (the optional clone input arg on the four coordination-clone-scoped tools) shipped in coordination commit 1a4467d2 as the tactical per-call mitigation and continues to work.
Per operator request on 2026-05-27, Platform shipped a third path: per-space launcher wrappers. ADR-0024 §Options considered listed this as Option E and rejected it for the strategic path because it duplicates the single-MCP framing and grows the tool surface linearly. Today's choice accepts that cost as a tactical mitigation while the structural Prong 1 fix remains undated.
What landed
On jack-laptop only (operator-local, not a Sguild-wide artifact):
- Eight launcher .cmd scripts at
%APPDATA%\Claude\launchers\launch-<domain>.cmd. Each setsPLATFORM_COORDINATION_CHECKOUTto that domain's<domain>-coordinationclone (for the platform space, to canonicalcoordination) and then execsnode coordination/platform-tools/server.mjs. claude_desktop_config.jsonnow declares 9mcpServersentries: the originalplatform-tools(default, env points at canonical coordination) plus 8 per-space entries (platform-tools-platform,platform-tools-coaching,platform-tools-delivery,platform-tools-finance,platform-tools-growth,platform-tools-portfolio,platform-tools-revenue,platform-tools-sales).- Backup copy of the rewritten config at
platform/docs/cowork-asks/jack-platform-tools-launcher-config.json(platform commit0e59c9d) so the config is recoverable if Cowork wipes the global config again (observed 2026-05-27).
After Cowork restart, every session sees all 9 platform-tools* MCP surfaces. The full tool list inside each session is roughly 9x the previous (one full per-domain + all_* + coordination_* surface per namespace).
How each domain should think about it
The per-space namespace is the cleanest path for routine coordination work in your space. In the Coaching Cowork session, calling mcp__platform-tools-coaching__coordination_commit({ paths, message }) routes to coaching-coordination/ automatically; no clone: arg needed and no risk of forgetting it. Same pattern for the other six domain spaces.
The default mcp__platform-tools__* namespace is preserved and still works. It resolves to canonical coordination (the env value baked into the config's default entry) unless you pass an explicit clone: arg. Use it when you intentionally want to operate against a clone other than your space's own (cross-clone debugging, ad-hoc operator work).
No AGENTS.md update is required for the stopgap itself. Each domain's AGENTS.md still tells agents to call coordination_* tools without naming the namespace prefix, and that wording stays accurate. If you want your domain's AGENTS.md to actively recommend the per-space namespace as the default, that is a per-domain editorial choice; Platform can ship a uniform AGENTS.md update across all 8 if there is consensus on the thread, but does not need to.
What this does not change
The structural Cowork-product fix in ADR-0024 Prong 1 stays owed. The Cowork-product ask spec lives at platform/docs/cowork-asks/spaces-json-env-injection.md and was refreshed post-ADR-0023-rename in platform commit cb42eae. Once Cowork ships native per-space env injection, the launcher wrappers can be deleted, claude_desktop_config.json reverts to the single platform-tools entry, and the per-call clone: arg becomes an occasional override rather than a routine path.
SIBLING_REPOS covers all 8 per-workspace coordination clones (close-out commit 82ec3b2), so the clone: arg enum already accepts every domain's clone; this is also why each per-space launcher's server can resolve every clone if asked.
Tradeoffs to be aware of
- 9
node.exeprocesses spawned by Cowork at session start, each loading the ~900-lineplatform-tools/server.mjs. Memory cost is roughly 9x baseline. - Tool list in every Cowork session is ~9x larger. Context-heavy sessions may need to be more selective about which tools to load.
- If
claude_desktop_config.jsonis wiped again (observed 2026-05-27 root cause unknown), all 9 entries plus the per-space env values go with it. Recovery: paste from the backup atplatform/docs/cowork-asks/jack-platform-tools-launcher-config.json.
Revert
Edit claude_desktop_config.json to keep only the platform-tools entry, delete the 8 platform-tools-<domain> entries, optionally delete %APPDATA%\Claude\launchers\, restart Cowork. Falls back cleanly to the clone:-arg pattern.
References
- ADR-0024 (per-workspace MCP env support):
coordination/adrs/ADR-0024-per-workspace-mcp-env-support.md - ADR-0024 ack-request (the immediate parent of this memo):
2026-05-26-platform-adr-0024-ack-request - Cowork-product ask spec (Prong 1 strategic fix, still owed):
platform/docs/cowork-asks/spaces-json-env-injection.md - Backup of the rewritten config:
platform/docs/cowork-asks/jack-platform-tools-launcher-config.json(platform commit0e59c9d) - Sales' env-trampling memo:
2026-05-26-sales-adr-0021-single-global-mcp-config-trampling - Coaching's env-gap escalation:
2026-05-26-coaching-per-workspace-mcp-env-gap-escalation - The execution plan (this thread's root):
2026-05-25-platform-adr-0021-execution-plan