7. Comandos CLI

Por: Artiko
gooseclicomandosreferencia

7. Comandos CLI

Referencia operativa: todos los comandos de la CLI agrupados por uso.


Subcomandos top-level

goose [SUBCOMANDO] [FLAGS]
SubcomandoFunción
sessionIniciar / retomar / listar sesiones
runCorrer un recipe o tarea sin sesión interactiva
configureWizard interactivo de configuración
recipeCrear / listar / inspeccionar recipes
projectGestión de proyectos
extensionGestión de extensions y MCP servers
benchBenchmark de providers
updateActualizar Goose a última versión
infoInfo del estado actual (provider, modelo, extensions)
statsMétricas de uso (tokens, costo, sesiones)

goose session

goose session                      # nueva sesión, nombre auto
goose session --name feat-x        # nueva nombrada
goose session --resume feat-x      # retomar una existente
goose session --list               # listar sesiones
goose session --delete feat-x      # borrar
goose session --prune --older-than 30d

Flags útiles

--model <name>                # override del modelo
--provider <name>             # override del provider
--no-extensions               # arrancar sin extensions
--with-extension <name>       # forzar una extension específica
--auto-approve-tools <list>   # pre-aprobar herramientas (cuidado)
--system-prompt <path>        # custom system prompt
--readonly                    # solo lectura, sin modificar nada

Modo readonly

Para auditorías / reviews sin riesgo:

goose session --readonly
> ¿Qué hace este código? ¿Tiene problemas de seguridad?

El agente puede leer pero no escribir. Buen modo para usuarios nuevos o para tareas exploratorias.


goose run

Ejecutar tarea no interactiva — ideal para scripts y CI:

# Recipe completo
goose run my-recipe.yaml

# Recipe con parámetros
goose run my-recipe.yaml --param env=staging --param branch=main

# Prompt directo (sin recipe)
goose run --prompt "Genera CHANGELOG.md desde los últimos 30 commits"

# Con timeout
goose run my-recipe.yaml --timeout 300s

# Output a archivo
goose run my-recipe.yaml --output result.json

Cuando termina, el exit code refleja el resultado:

Esto te permite usar Goose en pipelines de CI con la lógica de tu shell:

goose run check-pr.yaml || exit 1

goose configure

Wizard interactivo:

goose configure                # config global
goose configure --provider     # solo provider
goose configure --extensions   # solo extensions
goose configure --reset        # volver a defaults

Para automatizar (sin TUI):

goose configure --provider claude-code --model claude-sonnet-4-5 --no-interactive

goose recipe

Gestión de recipes (cubierto en detalle en el capítulo 10):

goose recipe list              # recipes locales y compartidos
goose recipe new my-recipe     # crear recipe template
goose recipe edit my-recipe    # abrir editor
goose recipe show my-recipe    # ver definición
goose recipe validate my-recipe.yaml  # check sintaxis y schema
goose recipe deeplink my-recipe       # generar URL para compartir

goose project

goose project init             # inicializar .goose/ en cwd
goose project list             # proyectos registrados globalmente
goose project info             # info del proyecto current
goose project use my-app       # switch
goose project remove my-app    # quita del registry (no borra archivos)

goose extension

goose extension list                          # extensions activas
goose extension list --available              # todas las disponibles
goose extension enable filesystem
goose extension disable shell
goose extension install <mcp-server-url>      # instalar MCP server
goose extension info <name>                   # detalles de una

Allowlist mode

Para entornos enterprise:

goose extension --allowlist-only
# Solo permite extensions de la allowlist configurada

Cubrimos esto en el capítulo 12.


goose bench

goose bench                              # bench default
goose bench --providers claude-code,codex
goose bench --tasks tasks.yaml           # con tasks custom
goose bench --output results.json

Output ejemplo:

Provider          Latency p50  p99    Tokens   Success  Cost
claude-code       2.3s         8.1s   142k     94%      $0.84
codex             1.8s         5.4s   158k     91%      $1.12
gemini-cli        3.1s         12.4s  201k     83%      $0.42

Comandos slash (dentro de la sesión)

Mientras estás en goose session:

ComandoFunción
/helpLista comandos slash
/exit o Ctrl+DSalir
/clearBorrar history (mantiene config)
/save <name>Guardar sesión con nombre
/compactCompactar history para liberar contexto
`/mode <planact>`
/model <name>Cambiar modelo en uso
/extensionsListar extensions activas
/filesListar archivos en context
/close <file>Quitar archivo del context
/reload-persistentRe-cargar .goose/persistent.md
/permissionsVer / editar permisos para esta sesión
/costCosto estimado de la sesión hasta ahora
/tokensTokens consumidos in/out
/system-promptVer el system prompt activo
/diffVer cambios pendientes sin aplicar
/undoRevertir último cambio (si fue aplicado)
/sleepPausar sesión, mantiene state

Atajos de teclado

TeclaAcción
Ctrl+C (1 vez)Cancelar el response actual
Ctrl+C (2 veces)Salir de la sesión
Ctrl+DSalir si línea vacía
Ctrl+LLimpiar pantalla (no afecta history)
Up / DownNavegar comandos previos
TabAutocompletar archivos / comandos

goose stats

Métricas de uso:

goose stats                       # default: últimos 7 días
goose stats --since "2026-04-01"
goose stats --by model
goose stats --by extension
goose stats --output csv

Output:

Period: 2026-05-03 → 2026-05-10
Sessions: 47 (3 active)
Total turns: 1,243
Tokens: 8.7M in / 1.4M out
Cost: $42.18

By model:
  claude-sonnet-4-5      $35.04 (83%)
  claude-haiku-4-5       $4.21 (10%)
  gpt-5-mini             $2.93 (7%)

By extension:
  developer (built-in)   1.4M tool calls
  github-mcp             231 tool calls
  postgres-mcp           87 tool calls

Salida estructurada

Para integrar Goose con otros tools:

# Output JSON
goose run my-recipe.yaml --output-format json

# Streaming (SSE)
goose run my-recipe.yaml --stream

Ejemplo de output JSON:

{
  "session_id": "abc123",
  "duration_ms": 4231,
  "turns": 7,
  "tokens": { "in": 14213, "out": 2104 },
  "tool_calls": 12,
  "result": {
    "files_modified": ["src/auth.ts"],
    "exit_code": 0,
    "summary": "Agregué validación de email al middleware de auth."
  }
}

Patrones de uso eficiente

Quick task con auto-approve

goose session --auto-approve-tools edit --readonly=false \
  -- "Agregá un comentario JSDoc a cada función pública en src/utils.ts"

(Cuidado con auto-approve: úsalo solo cuando sabés exactamente qué tareas vas a delegar.)

Pipeline en CI

# .github/workflows/release-notes.yml
- name: Generate release notes
  run: |
    goose run release-notes.yaml \
      --param tag=${{ github.ref_name }} \
      --output release-notes.md

Multiplexar sesiones

Tres terminales abiertas en paralelo:

# Terminal 1
goose session --name backend-refactor

# Terminal 2
goose session --name frontend-tests

# Terminal 3
goose session --name docs-review

Cada una con su modelo, extensions y context aislado.


Variables de entorno top

GOOSE_PROVIDER=claude-code        # override provider
GOOSE_MODEL=claude-haiku-4-5      # override modelo
GOOSE_LOG_LEVEL=debug             # logs verbosos
GOOSE_DISABLE_TELEMETRY=1         # apagar usage data
GOOSE_NO_AUTO_APPROVE=1           # prohibir auto-approve aunque la flag pase
GOOSE_CONFIG=/path/to/config.yaml # config alternativa

¿Qué viene?

Manejás la CLI a fondo. En el próximo capítulo cubrimos context engineering: cómo armar prompts efectivos, plans, prompt templates y el archivo gooseignore para que el agente vea exactamente lo que tiene que ver.