Skip to content

Bug: Personal squad fails to auto-detect #984

Closed

Description

@ajzozakiewicz

Expected behavior
Running squad init in project folder should honor global squad when global squad is installed.

Actual behavior
Repo level squad is created

Steps to recreate:

When following the docs for personal squad, I get the following result.

  1. Run squad init --global
Squad Status

  Active squad: personal (global)
  Path:         /Users/<user>/Library/Application Support/squad/.squad
  Reason:       No repo .squad/ found; personal squad exists at global path

  Repo resolution:   not found
  Global path:       /Users/<user>/Library/Application Support/squad
  Global squad:      /Users/<user>/Library/Application Support/squad/.squad
  1. cd into ~/project/repo
  2. squad init

Result: Squad CLI creates repo squad and all template files. .squad/config.json has:

{
  "version": 1
}

OS: Mac OS Tahoe 26.3
Node: v22.18.0
Npm: 10.9.3

Activity

  1. changed the title [-]Bug - Personal squad fails to auto-detect[/-] [+]Bug: Personal squad fails to auto-detect[/+] on Apr 16, 2026
  2. dat-intellis commented on Apr 16, 2026

    @dat-intellis

    What version are you using? I think this is fixed in the insiders preview

  3. ajzozakiewicz commented on Apr 16, 2026

    @ajzozakiewicz
    Author

    squad -v: 0.9.1

  4. dat-intellis commented on Apr 17, 2026

    @dat-intellis

    I filed a bug on this a few weeks back which has been resolved. If you switch to insiders it works.

    But can't guarantee much else :D

  5. ajzozakiewicz commented on Apr 18, 2026

    @ajzozakiewicz
    Author

    I still seem to be experiencing the bug.

    squad -v
    0.9.4-insider.1
    
    squad status
      Active squad: personal (global)
      Path:         /Users/<user>/Library/Application Support/squad/.squad
      Reason:       No repo .squad/ found; personal squad exists at global path
    
      Repo resolution:   not found
      Global path:       /Users/<user>/Library/Application Support/squad
      Global squad:      /Users/<user>/Library/Application Support/squad/.squad
    

    I also added an agent to my personal team using squad add

    squad personal list
    
    Personal Squad Agents (1):
    
      Name    Role  Charter Path
      ──────  ────  ────────────────────────────────────────
      rocket  lead  ../Library/Application Support/squad/personal-squad/agents/rocket/charter.md
    

    Now cd to a repo and init with personal squad

    cd /project/folder
    squad init
    

    Output:

    Let's build your team.
    
    ✓ .squad/casting/policy.json
    ✓ .squad/casting/registry.json
    ✓ .squad/casting/history.json
    ✓ .squad/config.json
    ✓ .squad/agents/scribe/charter.md
    ✓ .squad/agents/scribe/history.md
    ✓ .squad/agents/ralph/charter.md
    ✓ .squad/agents/ralph/history.md
    ✓ .squad/identity/now.md
    ✓ .squad/identity/wisdom.md
    ✓ .squad/ceremonies.md
    ✓ .squad/decisions.md
    ✓ .squad/team.md
    ✓ .squad/routing.md
    ✓ .copilot/skills
    ✓ .github/agents/squad.agent.md
    ✓ .squad/templates
    ✓ .github/workflows/squad-heartbeat.yml
    ✓ .github/workflows/squad-issue-assign.yml
    ✓ .github/workflows/squad-triage.yml
    ✓ .github/workflows/sync-squad-labels.yml
    ✓ .copilot/mcp-config.json
    ✓ .squad/.first-run
    
    ◆ SQUAD
    
      📁  Team workspace
      📋  Skills & ceremonies
      🔧  Workflows & CI
      🧠  Identity & wisdom
      🤖  Copilot agent prompt
    
    Your team is ready. Run squad to start.
    
    ✓ Personal squad detected — your personal agents will be available here.
    

    Expected Behavior: Personal squad used. Repo squad not created.

    Actual Behavior: New repo squad created even though it seems to see the personal squad is present.

    Am I missing something here?

  6. dat-intellis commented on Apr 19, 2026

    @dat-intellis

    I think the global squad is supposed to be in squad/personal-squad

  7. PandaFoxx commented on May 6, 2026

    @PandaFoxx

    I found a manual workaround. You should update ~\.squad\config.json to

    {
      "version": 1,
      "teamRoot": "{personal squad directory}",
      "projectKey": null
    }

    Then change the global folder to:

    ~/.config/squad/personal-squad/ # Linux/macOS
    or
    %APPDATA%/squad/personal-squad/ # Windows

    --

    The clue is in this skill: ~\.squad\templates\skills\personal-squad\SKILL.md

    --

    As of version 0.9.4 - you should now see

    Image
  8. dat-intellis commented on May 7, 2026

    @dat-intellis

    I suspect there might be an inconsistency between the cli expected path and the skills expected path

  9. joniba commented on May 17, 2026

    @joniba
    Contributor

    Same bug on Windows + 0.9.4-insider.1 today. Adding a repro and a CLI flag that does wire it correctly, since the thread doesn't mention it yet.

    Environment

    • OS: Windows 11
    • Node: 22.x
    • Squad: 0.9.4-insider.1 (installed via npm install -g @bradygaster/squad-cli)
    • Personal squad: present at %APPDATA%\squad\.squad\ (created via squad init --global, fully populated with cast)

    Reproduction

    cd C:\path\to\fresh\project   # no prior .squad/
    squad init

    Output ends with the same misleading line:

    ✓ Personal squad detected — your personal agents will be available here.
    

    But .squad/config.json is just:

    { "version": 1 }

    No teamRoot. squad status confirms local mode: Active squad: repo … Reason: Found .squad/ in repository tree. The personal squad is not actually connected.

    Workaround that actually wires teamRoot

    The CLI help (squad --help) exposes a --mode remote <team-repo-path> form that the personal squad guide doesn't mention:

    squad init --mode remote "C:\Users\<user>\AppData\Roaming\squad"

    After this, config.json correctly contains:

    {
      "version": 1,
      "teamRoot": "..\\..\\..\\Users\\<user>\\AppData\\Roaming\\squad",
      "projectKey": null
    }

    This is a different workaround from @PandaFoxx's manual edit + personal-squad/ subfolder rename — --mode remote works against the standard %APPDATA%\squad\.squad\ layout that squad init --global produces, with no manual edits.

    Suggested fix (one of)

    1. Fix detection: plain squad init should auto-write teamRoot when a personal squad is detected (matches the docs page wording).
    2. Fix the message: if auto-wiring is intentionally opt-in, change the post-init line from ✓ Personal squad detected — your personal agents will be available here. to something like ℹ Personal squad detected at <path>. To connect this project, run: squad init --mode remote "<path>" — the current wording strongly implies wiring happened when it didn't.
    3. Fix the docs: the personal squad guide shows an ✅ Squad initialized. .squad/config.json → teamRoot: … output that doesn't match current CLI behavior. Either update the docs to require --mode remote, or fix feat: worktree awareness, Scribe auto-commit, and decision consolidation #1.

    Happy to PR any of the above if it'd help.

  10. dat-intellis commented on Jun 5, 2026

    @dat-intellis

    That skill mentioned also wrongfully mentions:

    • '~/.config/squad/personal-squad/ # Linux/macOS'

    Which is the path for Linux only.

    According to docs in various places and the implementation the macOS path should resolve to:

    • '/Users//Library/Application Support/squad/personal-squad/'
  11. dat-intellis commented on Jun 11, 2026

    @dat-intellis

    BUG-2 + DOC-4 cross-reference

    Verified on main (v0.10.0): the else branch in packages/squad-cli/src/cli/core/init.ts (runInit()) still detects the personal squad via resolvePersonalSquadDir() but never writes teamRoot to .squad/config.json. Result: the project always stays in standalone mode; personal agents are not inherited.

    Additionally, docs/src/content/docs/guide/personal-squad.md (lines 86–153, "Connect a project" / "What Just Happened?" sections) documents teamRoot being auto-written as:

    { "version": 1, "teamRoot": "{personal squad directory}", "projectKey": null }

    …which is fully inconsistent with the actual output ({ "version": 1 }). Anyone following that guide ends up with a broken setup.

    Two options for resolving both:

    • Fix init.ts non-global branch to write teamRoot (resolves BUG-2 and makes the guide accurate), or
    • Update personal-squad.md to document the real behaviour + manual workaround until the fix lands.

    The workaround (manually add "teamRoot" to .squad/config.json) noted in this thread still applies.

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

    triagedIssue has been triagedwave:1-nextWave 1 — immediate next sprint

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions