id = "block-goose-cli"
name = "Goose"
homepage = "https://block-goose.mintlify.app/"
description = "An open-source AI agent that automates complex development tasks."
executables = ["goose"]
[dotfiles]
paths = ["~/.config/goose/config.yaml"]
secret = [
"~/.config/goose/secrets.yaml",
"%APPDATA%/Block/goose/config/secrets.yaml",
]
side_effect = false
[commands]
format = 1
label = "goose"
description = "Run goose non-interactively with a prompt or instruction file. Recipes, extensions and the other subcommands are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.subcommand]]
path = ["run"]
label = "Run a task"
description = "Give goose text or an instruction file and let it work."
[[commands.subcommand.source]]
id = "docs"
kind = "manual"
url = "https://goose-docs.ai/docs/guides/goose-cli-commands"
revision = "main 2026-10-27"
evidence = """
- **`-i, --instructions <FILE>`**: Path to instruction file containing commands. Use `-` for stdin
- **`-t, --text <TEXT>`**: Input text to provide to goose directly
- **`-s, --interactive`**: Continue in interactive mode after processing initial input
- **`-n, --name <name>`**: Name for this run session (e.g. `daily-tasks`)
- **`-r, --resume`**: Resume from a previous run
- **`--no-session`**: Run goose commands without creating or storing a session file
- **`--debug`**: Output complete tool responses, detailed parameter values, and full file paths
- **`--max-turns <NUMBER>`**: Maximum number of turns allowed without user input (default: 1000)
- **`-q, --quiet`**: Quiet mode. Suppress non-response output, printing only the model response to stdout
- **`--output-format <FORMAT>`**: Output format (`text`, `json`, or `stream-json`). Default is `text`. Use JSON structured output for automation and scripting: `json` for results after completion, `stream-json` for events as they occur
- **`--provider`**: Specify the provider to use for this session (overrides environment variable)
- **`--model`**: Specify the model to use for this session (overrides environment variable)
"""
[[commands.subcommand.field]]
id = "text"
label = "Prompt text"
type = "string"
option = ["--text", "-t"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "instructions"
label = "Instruction file"
type = "path"
option = ["--instructions", "-i"]
path = { kind = "file", role = "input", must_exist = true }
sources = ["docs"]
[[commands.subcommand.field]]
id = "interactive"
label = "Stay interactive afterwards"
type = "boolean"
option = ["--interactive", "-s"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "name"
label = "Session name"
type = "string"
option = ["--name", "-n"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "resume"
label = "Resume previous run"
type = "boolean"
option = ["--resume", "-r"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "no_session"
label = "Don't store a session"
type = "boolean"
option = ["--no-session"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "quiet"
label = "Quiet (response only)"
type = "boolean"
option = ["--quiet", "-q"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "output_format"
label = "Output format"
type = "enum"
option = ["--output-format"]
choices = [
{ value = "text", label = "Text" },
{ value = "json", label = "JSON" },
{ value = "stream-json", label = "Streaming JSON" },
]
sources = ["docs"]
[[commands.subcommand.field]]
id = "provider"
label = "Provider"
type = "string"
option = ["--provider"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "model"
label = "Model"
type = "string"
option = ["--model"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "max_turns"
label = "Max turns without input"
type = "integer"
option = ["--max-turns"]
sources = ["docs"]
[[commands.subcommand.field]]
id = "debug"
label = "Debug output"
type = "boolean"
option = ["--debug"]
sources = ["docs"]
[[commands.subcommand.task]]
id = "prompt"
label = "Run a prompt"
fields = ["text", "quiet", "no_session"]
required = ["text"]
[[commands.subcommand.task]]
id = "file"
label = "Run an instruction file"
fields = ["instructions", "name", "quiet"]
required = ["instructions"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["text", "instructions", "interactive", "name", "quiet"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["resume", "no_session", "output_format", "provider", "model", "max_turns", "debug"]