You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Linked-team teamRoot: the FAQ's ../team-repo/.squad form makes squad loop report "No squad found" #2107
either; {teamRoot}/.squad/team.md, or {teamRoot}/team.md "if teamRoot already points inside .squad/"
FAQ, and guide/personal-squad.md (shows agents/ directly under the team dir)
the .squad directory itself
So a team linked the way the FAQ shows works in a Copilot session but not under squad loop.
Suggested fix
Either:
Make the CLI match the coordinator: in effectiveSquadDir(), use {teamRoot}/.squad when it exists, otherwise {teamRoot} when it holds team.md; or
Pick the parent-of-.squad form as canonical: fix the FAQ and personal-squad docs, and drop the coordinator fallback (maybe with a squad doctor check that flags a teamRoot ending in .squad).
(1) is the smaller change and keeps existing links working.
One more data point: this is a conflict inside the CLI itself, not only between the CLI and the docs. In v0.13.1 (b448cd3), squad state-mcp and squad loop read the same teamRoot in two different ways:
Consumer
Where it reads team state
squad state-mcp → createStateMcpToolRegistry() (state-mcp.ts:72) → new ToolRegistry(paths.teamDir)
teamRoot → the .squad dir (the FAQ form): squad_state tools work, squad loop says "No squad found".
teamRoot → the parent of .squad (the squad link form): squad loop works, but squad_state reads and writes {parent}/decisions/inbox etc., outside .squad/.
No single value works for both. Option (1) above would fix loop without changing squad_state. Option (2) would also need ToolRegistry to append paths.name in remote mode.
Activity
cherie-q commentedon Sep 29, 2026
One more data point: this is a conflict inside the CLI itself, not only between the CLI and the docs. In v0.13.1 (
b448cd3),squad state-mcpandsquad loopread the sameteamRootin two different ways:squad state-mcp→createStateMcpToolRegistry()(state-mcp.ts:72) →new ToolRegistry(paths.teamDir){teamRoot}/decisions/inbox,{teamRoot}/agents/<name>/history.md,{teamRoot}/<key>(tools/index.ts:490, 595, 660)squad loop/watch→effectiveSquadDir()(effective-squad-dir.ts:55){teamRoot}/.squad/team.mdSo for a linked team:
teamRoot→ the.squaddir (the FAQ form):squad_statetools work,squad loopsays "No squad found".teamRoot→ the parent of.squad(thesquad linkform):squad loopworks, butsquad_statereads and writes{parent}/decisions/inboxetc., outside.squad/.No single value works for both. Option (1) above would fix
loopwithout changingsquad_state. Option (2) would also needToolRegistryto appendpaths.namein remote mode.fix(sdk,cli): resolve linked team state for both teamRoot forms
fix(sdk,cli): resolve linked team state for both teamRoot forms
fix(sdk,cli): resolve linked team state for both teamRoot forms (gith…
fix(doctor): preserve legacy stray casting/policy.json detection in l…
fix(state): transactional governed-memory migration and source-branch…