Raw research notes

Goose (Block / AAIF) — raw research notes

Check date: 2026-11-14.

Sources opened that day are linked in each section and listed again at the end. Anything not opened is marked UNVERIFIED. Numbers below are copied from those pages. They were not estimated.

Docs home moved from block.github.io/goose to https://goose-docs.ai/. A search result for the old URL showed a redirect page titled "goose has moved" pointing at goose-docs.ai. The current repo is https://github.com/aaif-goose/goose (organization aaif-goose). The README still on github.com/block/goose resolves to that same aaif-goose/goose repository.


1. What it is, license, steward, release, stars

What it is. Official homepage and README (both opened): goose is a general-purpose AI agent that runs on your machine, for code and also research, writing, automation, and data analysis. It ships as a native desktop app for macOS, Linux, and Windows, a CLI, and an API. The homepage also describes the goose Development Kit (GDK) for building agents into other apps. Built in Rust.

License. Apache License 2.0.

Steward. Founded by Block. Now stewarded by the Agentic AI Foundation (AAIF), a Series of LF Projects, LLC.

Latest release. Two different "latest" pointers exist. Do not treat them as the same build.

Pointer What was opened Date
Version tag v1.59.1 GitHub "latest" release API: tag_name v1.59.1, prerelease false, published_at 2026-11-14T06:50:12Z. Body text: "macOS desktop builds and full release notes coming soon." 2026-11-14
Moving tag stable Release name "Stable". published_at is 2025-01-30T05:20:18Z (the tag's original publish time). updated_at 2026-11-10T17:26:29Z. Desktop zip/installer assets on this tag were replaced on 2026-11-10 (timestamps below). Assets updated 2026-11-10

v1.59.1 asset names that were in the latest-release API response include CLI archives (goose-x86_64-pc-windows-msvc.zip, goose-aarch64-apple-darwin.tar.gz, and similar), Linux desktop packages (deb, rpm, flatpak), Goose-win32-x64.zip, and Goose-win32-x64-cuda.zip. That asset-name list did not include Goose-win32-x64-setup.exe, Goose.zip, or Goose_intel_mac.zip.

The install buttons do not point at v1.59.1. They point at the stable tag. On that tag, these desktop files were updated 2026-11-10:

Which goose version string is inside those stable zips was not opened (no download and no version file inside the zip). UNVERIFIED that the 2026-11-10 stable desktop files are exactly v1.59.0 or v1.59.1. The timing matches the releases page entry for v1.59.0 ("10 Nov 17:17") more closely than v1.59.1 (14 Nov, which says macOS desktop builds are still coming).

Stars. GitHub API stargazers_count: 56600, on the response whose repo updated_at is 2026-11-14T14:41:23Z. Stars change. https://api.github.com/repos/aaif-goose/goose

A search snippet earlier the same day showed 56460. The API figure above is the one opened directly.


2. Windows 11 and macOS install (desktop and CLI)

Install guide opened: https://goose-docs.ai/docs/getting-started/installation

Source of the download buttons (GitHub contents API, main, 2026-11-14):

The docs do not say "Windows 11" as a separate path. They say Windows, and that PowerShell is available on Windows 10/11 by default. macOS steps do not name a minimum macOS version on the install page. UNVERIFIED minimum OS versions.

Windows desktop

Buttons:

Quoted install steps from the install guide:

  1. Installer (called recommended in that section): run Goose-win32-x64-setup.exe and follow the setup wizard. "goose is installed for the current user only, so no administrator rights are needed." Launch from the Start Menu or the desktop shortcut. Uninstall later from Installed apps in Windows Settings. "Your settings and sessions are kept."
  2. Portable ZIP: unzip, then run Goose.exe in the unzipped folder.

Unattended install, quoted:

Start-Process -FilePath .\Goose-win32-x64-setup.exe -ArgumentList '/S' -Wait

That silent install goes to %LOCALAPPDATA%\Programs\Goose.

Updating guide (https://goose-docs.ai/docs/guides/updating-goose and the raw markdown): installer updates download a new installer, verify a signature, and open the setup wizard on Install & Restart. Portable ZIP updates replace the unzipped folder. Settings and sessions live in %APPDATA%\Block\goose, outside the unzipped folder, so they carry over if you switch from the ZIP to the installer. The folder name still says Block.

macOS desktop

Buttons:

Quoted steps: unzip the zip, run the executable. Updating guide adds: drag the extracted Goose.app to the Applications folder to overwrite the current version.

Homebrew, quoted:

brew install --cask block-goose

The install page says Homebrew downloads the same app and can take care of updates. The cask file it links is still named block-goose: https://github.com/Homebrew/homebrew-cask/blob/master/Casks/b/block-goose.rb (link target was in the markdown; the cask file itself was not opened).

Documented snag: on an Apple Mac M3, if the desktop app shows no window, ~/.config needs read and write access so goose can create its log directory. Known Issues link from the install page: https://goose-docs.ai/docs/troubleshooting/known-issues (that known-issues page was not opened).

macOS CLI

Quoted:

curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash

Skip the interactive provider setup:

curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash

Homebrew:

brew install block-goose-cli

Update later: goose update. Canary: goose update --canary. Check version: goose --version.

Start a session from the folder you want goose to use:

goose session

Windows CLI

The install guide says native Windows CLI needs one of: Git Bash (recommended, from Git for Windows), MSYS2, or PowerShell (on Windows 10/11 by default). It recommends native Windows over WSL.

Git Bash or MSYS2, quoted:

curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash

PowerShell, quoted. The install page uses the main branch script, not the stable release asset:

Invoke-WebRequest -Uri "https://raw.githubusercontent.com/aaif-goose/goose/main/download_cli.ps1" -OutFile "download_cli.ps1";
.\download_cli.ps1

The script's own header (opened via search of https://github.com/aaif-goose/goose/blob/main/download_cli.ps1) says supported architecture is x86_64, and on ARM64 it errors: "Windows ARM64 is not currently supported." The Windows CLI package it downloads is goose-x86_64-pc-windows-msvc.zip from the stable tag (or goose-x86_64-pc-windows-msvc-cuda.zip if GOOSE_WINDOWS_VARIANT is cuda). Default install directory in that script: %USERPROFILE%\.local\bin.

If goose is not on PATH, the install guide's PowerShell fix appends $env:USERPROFILE\.local\bin to the PowerShell profile. Git Bash/MSYS2: export PATH="$HOME/.local\bin:$PATH" in ~/.bashrc.

Windows keyring warning, quoted in substance: if you configure a provider manually, choose not to store the key in the keyring. On keyring errors, set the key as an environment variable (example in the docs: export OPENAI_API_KEY={your_api_key}) and run goose configure again.

WSL is documented as optional: wsl --install, then the same download_cli.sh inside Ubuntu, and bzip2 if extraction fails. The guide says it recommends the native Windows CLI instead.

Desktop and CLI share provider, model, and extension settings (install guide, "Shared Configuration Settings").

First run asks for a provider. Desktop welcome options listed: Quick Setup with API Key, ChatGPT Subscription, Agent Router by Tetrate, OpenRouter, Other Providers. The install page also says the first automatic Tetrate authentication gives $10 in free credits, for new and existing Tetrate users. That dollar amount is the docs' claim; Tetrate's own billing page was not opened.


3. Everyday capabilities

Files and commands

Other built-in extensions named on the extensions page: Computer Controller ("webscraping, file caching, and automations"), Memory, Tutorial, Auto Visualiser. Platform extensions enabled by default in that list: Analyze, Extension Manager, Skills, Summon. Computer Controller is not given the words "enabled by default" in that list.

External extensions are MCP servers. The extensions page says goose checks external extensions for known malware before activation and blocks a detected malicious package.

Browser

Three different documented paths. They are not one built-in browser coworker.

  1. Built-in skill web-search: "Search the web using DuckDuckGo (no API key), Tavily, or SearXNG, and extract page content." Skills extension is enabled by default. https://goose-docs.ai/docs/guides/context-engineering/using-skills
  2. Browser automation (open pages, click, fill forms, screenshots) is a separate install, quoted: browser-use skill install. The skills page calls this the upstream browser-use project, including remote browser support.
  3. Computer Controller is described as webscraping, file caching, and automations. Enable example: goose session --with-builtin "developer,computercontroller".

UNVERIFIED that Computer Controller drives a visible browser the way the browser-use skill does. The one-line description does not say that.

MCP extensions

Homepage and README: "70+ documented extensions" via the Model Context Protocol. An exact count of 70 was not opened; the docs say "70+".

Users add extensions in Desktop settings or with goose configure / goose session --with-extension. CLI example from the commands page: goose session --with-extension "memory:npx -y @modelcontextprotocol/server-memory". Remote MCP: --with-streamable-http-extension. https://goose-docs.ai/docs/guides/goose-cli-commands

MCP Apps, homepage: extensions can render buttons, forms, and visualizations inside goose Desktop.

Recipes and schedules

Recipes are reusable YAML (or JSON) workflows: instructions, extensions, parameters, optional provider/model, and subrecipes. https://goose-docs.ai/docs/guides/recipes/ and https://goose-docs.ai/docs/guides/recipes/session-recipes

Desktop can schedule a recipe from the Recipe Library or the Scheduler view. Fields: name, source, execution mode, frequency and time. Execution mode is background ("no window, results saved") or foreground ("opens window if goose Desktop is running, otherwise runs in background"). The frequency picker "is converted into a cron expression." Scheduler page can run now, edit, pause, and open past sessions.

CLI, from the commands guide:

goose schedule add --schedule-id daily-report --cron "0 0 9 * * *" --recipe-source ./recipes/daily-report.yaml

Also goose schedule list, sessions, run-now, and remove. Cron can be 5, 6, or 7 fields: "seconds minutes hours day-of-month month day-of-week year". The add command copies the recipe into ~/.local/share/goose/scheduled_recipes.

UNVERIFIED whether a scheduled job keeps running after the user logs out or the PC sleeps. The schedule pages opened do not say.

Subagents

Homepage: "Spawn independent subagents to handle tasks in parallel — code review, research, file processing."

Summon platform extension, enabled by default: "Load knowledge sources and delegate tasks to subagents."

Environment variables (https://goose-docs.ai/docs/guides/environment-variables):

Multi-model page: subagents are isolated goose instances that can use their own provider and model. https://goose-docs.ai/docs/guides/multi-model/

A tutorial walks through a software-team of subagents (planner, PM, architect, frontend, backend, QA, writer): https://goose-docs.ai/docs/tutorials/subagents/

v1.55.0 notes on the releases page include "Remove background subagents and orchestrator." What "background subagents" means after that removal was not opened in a current guide. The homepage still describes parallel subagents, and the env var for concurrent subagents is still documented.

Local models and llama.cpp

Documented local providers on the providers page, "Local LLMs" section (https://goose-docs.ai/docs/getting-started/providers):

Ollama: provider parameter OLLAMA_HOST. If unset, docs set it to localhost:11434 and prepend http:// when needed. Desktop shows locally installed Ollama models in the model dropdown. You must download and run a model first. Models without tool calling "can only do chat completion" and "all goose extensions must be disabled."

llama.cpp shows up in three documented places. It is not a row in the Available Providers table.

  1. Tool shim, not the main chat model. GOOSE_TOOLSHIM default false. GOOSE_TOOLSHIM_BACKEND values: "ollama" (default), "local", "llama.cpp". This is for models that print tool calls as text. https://goose-docs.ai/docs/guides/environment-variables
  2. CLI goose local-models (alias lm): search Hugging Face for GGUF and MLX models, download, list, delete. The commands page says: "This command is available in goose builds that include local inference support." Example: goose local-models download 'user/repo:Q4_K_M'. Whether the ordinary stable desktop zip includes that build was not opened. UNVERIFIED for the default download.
  3. GDK reference: crate goose-local-inference "Runs models on the user's machine, using llama.cpp for GGUF models and an optional MLX backend on Apple silicon." This is a developer library, not the desktop install guide. https://goose-docs.ai/docs/gdk/reference/

Docker Model Runner's chat path is documented as /engines/llama.cpp/v1/chat/completions, with OPENAI_HOST example http://localhost:12434. That is Docker's engine path, configured as the OpenAI provider.

A Goose-win32-x64-cuda.zip exists on both v1.59.1 and stable. UNVERIFIED that the CUDA zip is the local-inference / llama.cpp desktop build. No doc page opened said that.


4. Providers

Providers page opened: https://goose-docs.ai/docs/getting-started/providers

How many. The docs do not publish one exact total.

The Z.AI section also says "The existing Z.AI provider continues to use the Anthropic-compatible endpoint." That older Z.AI provider was not a row in the 47-row table as fetched. UNVERIFIED whether it is still selectable.

The page says goose "currently works best with Claude 4 models" because it relies on tool calling. o1-mini and o1-preview "are not supported because goose uses tool calling."

Ollama. Yes. See section 3. Hosted Ollama is a separate provider, Ollama Cloud, with OLLAMA_CLOUD_API_KEY.

OpenAI-compatible custom base URL. Yes, two documented ways.

  1. Built-in OpenAI provider. OPENAI_HOST is the custom endpoint URL (default api.openai.com). OPENAI_BASE_PATH is the path appended to the host (default v1/chat/completions). Docs' examples include vLLM, KServe, and other OpenAI-compatible servers. Quote: set OPENAI_HOST "to your proxy's root (no trailing path)."
  2. Custom providers. Desktop: Settings → Models → Configure providers → Add Custom Provider. API type must be OpenAI Compatible, Anthropic Compatible, or Ollama Compatible. You enter an "API URL: The base URL of the API endpoint." Local servers can uncheck "This provider requires an API key." Config files: ~/.config/goose/custom_providers/ on macOS/Linux, and %APPDATA%\Block\goose\config\custom_providers\ on Windows.

Free Gemini key. Documented. Providers page, "Using goose for Free" → "Google Gemini": "Google Gemini provides a free tier. To start using the Gemini API with goose, you need an API Key from Google AI studio." Desktop path: Settings → Models → Configure Providers → Google Gemini. CLI example model typed in the docs: gemini-2.0-flash-exp. The install page repeats: "Google Gemini offers a free tier you can get started with." Free-tier rate limits and which model names are still on that free tier were not opened. UNVERIFIED current Google free-tier quotas.

Free Groq key. Documented. Same "Using goose for Free" section: "Groq provides free access to open source (open weight) models with high-speed inference. To use Groq with goose, you need an API key from Groq Console." Provider parameter: GROQ_API_KEY. Models named there include moonshotai/kimi-k2-instruct-0905, qwen/qwen3-32b, llama-3.3-70b-versatile, and llama-3.1-8b-instant. Groq's own quota page was not opened. UNVERIFIED how large that free tier is in 2026.

The same free section also documents EmpirioLabs AI, FuturMix, Novita AI, Routstr, and SayGM. Those were opened on the providers page. Their prices were not checked on those companies' sites.


5. Safety defaults

Permission page opened: https://goose-docs.ai/docs/guides/managing-tools/goose-permissions

There is an approval system. Four modes:

Mode in the table CLI value What the docs say
Completely Autonomous auto Can modify files, use extensions, and delete files without approval
Manual Approval approve Asks before using tools or extensions
Smart Approval smart_approve Auto-approves low-risk actions and flags others
Chat Only chat Chat only. No extension use and no file modifications

Autonomous is the documented default. The page says, as a warning: "Autonomous Mode is applied by default." Environment variables agree: GOOSE_MODE values "auto", "approve", "chat", "smart_approve", default "auto".

Desktop: each session has its own mode. Settings → Chat → Default Mode sets the default for new sessions. Existing sessions keep their mode. Mid-session (terminal CLI only): /mode auto, /mode smart_approve, /mode approve, /mode chat. Correction, 2026-11-14: the permissions page lists these under the CLI tab only. At v1.59.1 the desktop's built-in slash commands (crates/goose/src/agents/execute_commands.rs) do not include mode, and unrecognized commands go to the model as plain text. Also, since v1.55.0 (PR #12802), sub-agents run in their parent chat's mode and forward approvals to the main chat, despite the Subagents page saying they are disabled in Manual and Smart Approval.

In manual and smart approval, the page says goose asks only for tools it deems write tools (text editor write/edit, bash rm/cp/mv). "Read/write approval makes best effort attempt at classifying read or write tools. This is interpreted by your LLM provider."

It can touch the user's real files. Developer extension is on by default, and autonomous mode can modify and delete files and run shell commands without approval. That is the extensions page and the permissions page, not an inference.

Prompt injection detection is off unless turned on. SECURITY_PROMPT_ENABLED default false. SECURITY_PROMPT_CLASSIFIER_ENABLED default false. Threshold default 0.8 only matters once detection is enabled. https://goose-docs.ai/docs/guides/environment-variables

Homepage security line: "Prompt injection detection, tool permission controls, sandbox mode, and an adversary reviewer that watches for unsafe actions." A page that explains the adversary reviewer, or that says sandbox mode is on for normal Desktop sessions, was not opened. UNVERIFIED that either is active by default.

The only sandbox behavior opened in detail is on the CLI providers page, and it is about the Codex CLI provider, which that page marks deprecated: GOOSE_MODE=chat maps to Codex --sandbox read-only, auto maps to --yolo ("Bypasses all approvals and sandbox restrictions"), smart-approve maps to --full-auto ("Workspace-write sandbox"). https://goose-docs.ai/docs/guides/cli-providers/ That is Codex's sandbox, not a documented default for the ordinary OpenAI/Gemini/Ollama goose session.

v1.54.0 release notes include "Prompt for goose mode during first-time configure." The current permissions page still says Autonomous is the default. UNVERIFIED whether a first-run prompt changes that default before the user picks anything. The permissions page, not the old changelog line, is the current user-facing statement.


6. What a non-coder finds hard, and desktop vs phone

This section is the documented friction, not a user study. No usability study was opened.

Hard parts that the docs themselves spell out:

This is a desktop and terminal coworker, not a phone assistant.

A 2026-05 GitHub issue comment about Settings → Session → Mobile App → Start Tunnel and a goose iOS app was about version 1.33.1-block on a Block-issued phone (https://github.com/aaif-goose/goose/issues/9026). That conflicts with the current "no longer available" mobile-access page. The current docs page is the one used here. The issue is not a current public install guide.


7. Scorecard facts

Checked 2026-11-14.

Capability ceiling. High for a computer that stays on. One desktop app plus the CLI can edit files, run a shell, call MCP extensions, search the web, schedule recipes in the background, and spawn subagents. Full browser control is an extra skill install (browser-use skill install), not the default built-in skill. The ceiling drops if the model cannot call tools: the providers page says those models are chat-only and extensions must be disabled. Docs say it works best with Claude 4. It is not a phone agent.

Win/Mac install friction. macOS desktop: download Goose.zip (Apple silicon) or Goose_intel_mac.zip (Intel), unzip, run. Or brew install --cask block-goose. Windows desktop: run Goose-win32-x64-setup.exe for the current user with no administrator rights, or unzip and run Goose.exe. The CLI is one curl on macOS. On Windows the CLI needs Git Bash, MSYS2, or PowerShell, a PATH edit if warned, and a keyring workaround. Both systems stop at a provider screen until an API key, a subscription sign-in, or a local model is set up. Practical snag on 2026-11-14: the versioned release v1.59.1 says macOS desktop builds are still coming, while the doc buttons use the stable tag, whose desktop files were updated 2026-11-10. A person who opens the latest GitHub release and looks for a Mac app zip can miss it.

Safe-by-default. No, on the current permissions page. Autonomous mode is the default, and the Developer extension is on by default, so goose can change files, delete files, and run commands without asking. Approval mode, smart approval, and chat-only exist and can be set as the default for new sessions. Prompt-injection detection ships off (SECURITY_PROMPT_ENABLED default false). Homepage names sandbox mode and an adversary reviewer; those were not documented as on by default in any page opened here.

Model flexibility. High. Marketing copy says 15+. The providers table lists 47 named providers, plus Cursor Agent, Claude ACP, Codex ACP, and Z.AI Coding Plan. Ollama works (OLLAMA_HOST, default localhost:11434). OpenAI-compatible custom base URLs work via OPENAI_HOST / OPENAI_BASE_PATH or a custom provider API URL (OpenAI, Anthropic, or Ollama compatible). A free Gemini key (Google AI Studio) and a free Groq key (Groq Console) are written up as start paths. Local GGUF through llama.cpp is documented for the tool shim, for goose local-models on builds that include local inference, and for the GDK. It is a harder path than picking Ollama or Groq.

Same app later for phone chat and background schedules. Background schedules: yes, without a second product. Desktop has a Scheduler (background or foreground). The CLI has goose schedule. Phone chat: not as a goose phone app. The mobile tunnel is removed, and the goose Mobile page is archived. The same goose install can talk to a phone only through the experimental Telegram gateway, and the computer has to stay awake and online with goose gateway start running. That is the same product plus Telegram, not a goose app you open on the phone.


Sources

Opened 2026-11-14 unless noted.

Not used for version, stars, or install steps: Wikipedia's Goose article (its stable version in search was older than the GitHub release opened here).

Checked 14 November 2026 · prices, limits, and versions change