All agent CLIs
Goose in NeuroSquad

Goose,with a canvas around it

Run Goose in as many cards as you like, each a real `goose session` in its own terminal. Its status hook tells NeuroSquad when a turn starts and ends, its own approval prompt says what it asks, arrows give it browsers, terminals and notes, and every card resumes its session after a restart.

Official sitegoose-docs.ai
  • The real goose CLI, your own providers
  • Your Goose config is never written
  • Free, for Windows 10 and 11
Status hook

It knows when Goose is done — and when it’s asking

Goose runs a command of your choosing with `thinking` when a message goes to the model and `waiting` when its prompt is back. Every card gets its own. A question has no hook, so the card reads Goose’s own prompt for it.

GOOSE_STATUS_HOOK thinkingsignal
Working

Goose runs the card’s status hook with thinking. The card’s icon spins and the Squad card counts it as working. Subagents run inside the same turn and don’t move it.

◆ Tool approval requestsignal
Needs you

In Goose’s approve modes a tool call waits on its ◆ prompt. The card reads it and the toast says Goose needs your permission: shell — rm -rf dist. In auto, Goose’s default, nothing asks.

GOOSE_STATUS_HOOK waitingsignal
Finished

waiting after a thinking: the prompt is back. The next queued prompt goes out, the journal gets the answer from Goose’s sessions.db, and a toast says it’s done.

Cancelled counts as finished

Ctrl+C mid-turn returns Goose to its prompt, and waiting ends the turn like any other — the card never hangs on “working”.

Questions, too

When a tool asks you something through Goose, the card shows Goose is asking: … with the question, and goes back to working once you answer.

Read from fixed words

The session id, the approval, the context bar and errors are Goose’s own printed words. If a future Goose rewords them, the card falls back to working/finished only.

Watch it work

Three things Goose does in NeuroSquad

Replicas of the app, played step by step. When Goose asks, the answer is yours.

In approve mode, Goose fixes a failing test, stops on its approval prompt before deleting a folder, and finishes — the journal writes itself.

Everything it gets

Everything Goose can do in NeuroSquad

Goose gets nearly everything Claude Code does. Here is all of it — including where Goose works differently, and the two things that can’t be done.

  • 01

    Knows its state

    Goose’s status hook and its own printed words report every turn.

  • Finished and waiting are different

    The card sets GOOSE_STATUS_HOOK: Goose calls it with thinking when a message goes to the model and waiting when its prompt is back — the exact start and end of every turn.

    Docs: Finished and waiting are different
  • A notification that says what it needs

    No hook fires for a confirmation, so the card reads Goose’s own prompt: Goose needs your permission: shell — rm -rf dist, or Goose is asking: … for a question. A waiting toast stays until you answer.

    Docs: A notification that says what it needs
  • Cancelled turns end cleanly

    Ctrl+C mid-turn cancels it — “Interrupted, what should goose work on instead?” — and the card marks it finished. At an idle prompt one Ctrl+C never quits Goose.

    Docs: Cancelled turns end cleanly
  • Picks up where it left off

    Goose picks its own session ids, so a card can’t choose one. The card reads the id from Goose’s banner (and after /new) and resumes with goose session --resume --session-id <id>.

    Docs: Picks up where it left off
  • The Squad status card

    Every AI agent of the workspace on one card, with its model from Goose’s own ledger — or GOOSE_MODEL from your config before the first turn.

    Docs: The Squad status card
  • 02

    Works through the canvas

    An arrow from the card is a set of tools, reached as a Goose extension.

  • Arrows are tools

    An arrow to a browser, terminal, note or another agent gives Goose browser_*, terminal_*, note_* or agent_* — in the very next request, because Goose drops its tool cache when the list changes.

    Docs: Arrows are tools
  • Canvas mode

    Goose’s developer extension is limited to write, edit, tree and read_image — no shell — and code_execution and computercontroller to nothing. A tool that isn’t offered can’t be approved back, not even in auto.

    Docs: Canvas mode
  • MCP servers from the registry

    Installed servers arrive as a second extension. Goose asks before each call in its approve modes; in auto it wouldn’t, so NeuroSquad asks itself — once, for the session, or deny.

    Docs: MCP servers from the registry
  • Can’t pre-approve per card

    Goose keeps per-tool permissions only in your own permission.yaml. So in approve mode NeuroSquad’s own tools are confirmed like any other — “Always Allow” stays your choice. In auto nothing asks.

    Docs: Can’t pre-approve per card
  • Skills from skills.sh

    An arrow to a skill card gives Goose skill_load with each skill and when to use it — live, like every other arrow.

    Docs: Skills from skills.sh
  • 03

    Built for long runs

    Context, Compact, rate limits and a running journal — handled on the card.

  • Context meter

    The latest request’s prompt from Goose’s ledger, the window from Goose’s own context bar (15k/128k). The ring turns amber from 80%.

    Docs: Context meter
  • Compact that doesn’t stop to ask

    Compact sends “Please compact this conversation” — a phrase Goose compacts on at once. /compact would stop on an “Are you sure?”.

    Docs: Compact that doesn’t stop to ask
  • Continues after a rate limit

    Goose retries 429s itself, then prints Ran into this error: …. The card shows the limit, and when the provider names a reset (“resets in 2h 15m”) it counts down and sends “continue”.

    Docs: Continues after a rate limit
  • Prompt queue

    Line up the next messages: each goes out when waiting says the turn is over. agent_send from a lead Goose reaches a helper Goose the same way.

    Docs: Prompt queue
  • Journal and hand-off

    Goose’s last reply is read from its sessions.db: the journal note, a hand-off to a fresh agent, agent_wait, custom cards and Telegram all get Goose’s real answer.

    Docs: Journal and hand-off
  • 04

    Works in a team

    Your Goose config stays yours; each card gets a layer under it.

  • A config layer, not your config

    Each card adds its own config.yaml through GOOSE_ADDITIONAL_CONFIG_FILES, merged under your values key by key. Your Goose folder stays the only one Goose writes.

    Docs: A config layer, not your config
  • Isolated worktrees

    Give an agent its own git worktree, so parallel agents never edit the same files. A resumed session stays in the card’s folder.

    Docs: Isolated worktrees
  • Add a reviewer

    One click starts an agent on a different CLI in the same worktree, with a prompt to review without editing. Goose can be that reviewer too.

    Docs: Add a reviewer
  • Dangerous mode, per card

    Goose has no flag for it, so a card in dangerous mode runs with GOOSE_MODE=auto over your config: tool calls run without asking. Off by default.

    Docs: Dangerous mode, per card
  • Instructions

    Goose reads AGENTS.md and .goosehints from the project itself, and puts NeuroSquad’s session instructions into its system prompt from the extension.

    Docs: Instructions
  • 05

    Cost, control and access

    What it spends, what it may spend, which model it runs on, and how you reach it.

  • Exact usage and cost

    Goose logs one row per request in its usage_ledger: model, tokens and Goose’s own cost. Cached tokens are counted once, and subagent sessions fold into the card that started them.

    Docs: Exact usage and cost
  • Budget brake

    A limit per workspace. Past it, each Goose gets Ctrl+C — the turn is cancelled, Goose keeps running — and automatic prompts stop. Raise the limit and it’s lifted.

    Docs: Budget brake
  • OpenRouter models

    Goose’s built-in openrouter provider, set per card by environment. Goose hard-codes its own attribution headers, so OpenRouter traffic goes through a local relay that sends NeuroSquad’s instead.

    Docs: OpenRouter models
  • From your phone

    Scan a QR code and the whole canvas opens in the phone’s browser: read Goose’s terminal, answer its question, send the next prompt.

    Docs: From your phone
  • Install it yourself

    Goose ships as a native binary with no npm or winget package, so the setup wizard doesn’t install it. NeuroSquad finds goose.exe — and skips the unrelated database tool that is also called goose.

    Docs: Install it yourself
At a glance

Who’s waiting, and what it cost

Two cards that answer the questions you ask most when several Goose agents run at once.

The Squad status card

Every agent of the workspace with its status, model and turn time. The one waiting on you comes first, with what Goose asks.

  • coupon-fixGoosegpt-5Goose needs your permission: shell — rm -rf distNeeds you3:51
  • api-migrationGoosegpt-5Move routes to the new clientWorking12:24
  • db-indexesGoosegpt-5-miniAdd the missing indexesWorking4:08
  • docs-passGoosegpt-5-miniUpdate the READMEFinished6 min. ago

Usage & cost

Read from Goose’s own ledger on your disk and matched to the card by the sessions its banner named. The rows always add up to the total.

AgentTokensCost
coupon-fix968,402$1.76
api-migration604,117$1.09
docs-pass201,936$0.09
Total1,774,455$2.94
Exact to the picodollar; rounded only on screen.Each row includes the subagent sessions it started.
Under the hood

The real Goose, plus a config layer

NeuroSquad starts the same `goose` you run yourself, in a real terminal in the card. Goose has no settings flag, so most of this travels through a config file and the environment:

What NeuroSquad adds to the command
❯ goose
sessionevery launchthe interactive session
--resume --session-id <its session id>later launchesthe same conversation after a restart
GOOSE_ADDITIONAL_CONFIG_FILES=<this card’s config.yaml>every launchMCP extensions and canvas limits, merged under your config
GOOSE_STATUS_HOOK=curl … /hook/%NEUROSQUAD_MCP_TOKEN%/<card>/Goose -devery launchthe turn’s start and end, reported to this card
NEUROSQUAD_MCP_TOKEN=… NEUROSQUAD_MCP_URL=…every launchtoken and address only in the environment, none on disk
developer.available_tools: write, edit, tree, read_imagecanvas modeno shell; the canvas’s cards instead
GOOSE_MODE=autodangerous modeapprove tool calls automatically

Survives new ports

A resumed Goose session reconnects the extensions saved with it, so their address is an environment reference — the card still reaches NeuroSquad after a restart.

Your login, your provider

Goose runs with the provider and key it already uses. Your NeuroSquad account is separate and never sees it.

A clean exit

Closing the window lets Goose close its session (“session closed · id”), leaving no stray process.

FAQ

Goose in NeuroSquad, answered

Give Goose a canvas

Free for Windows 10 and 11. Your code, your providers and your costs stay on your machine.