7. Comandos CLI
7. Comandos CLI
Referencia operativa: todos los comandos de la CLI agrupados por uso.
Subcomandos top-level
goose [SUBCOMANDO] [FLAGS]
| Subcomando | Función |
|---|---|
session | Iniciar / retomar / listar sesiones |
run | Correr un recipe o tarea sin sesión interactiva |
configure | Wizard interactivo de configuración |
recipe | Crear / listar / inspeccionar recipes |
project | Gestión de proyectos |
extension | Gestión de extensions y MCP servers |
bench | Benchmark de providers |
update | Actualizar Goose a última versión |
info | Info del estado actual (provider, modelo, extensions) |
stats | Mé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:
0: success.1: error genérico.2: timeout.3: rate limit.4: validation failed (recipe inválido o output no matchea schema).
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:
| Comando | Función |
|---|---|
/help | Lista comandos slash |
/exit o Ctrl+D | Salir |
/clear | Borrar history (mantiene config) |
/save <name> | Guardar sesión con nombre |
/compact | Compactar history para liberar contexto |
| `/mode <plan | act>` |
/model <name> | Cambiar modelo en uso |
/extensions | Listar extensions activas |
/files | Listar archivos en context |
/close <file> | Quitar archivo del context |
/reload-persistent | Re-cargar .goose/persistent.md |
/permissions | Ver / editar permisos para esta sesión |
/cost | Costo estimado de la sesión hasta ahora |
/tokens | Tokens consumidos in/out |
/system-prompt | Ver el system prompt activo |
/diff | Ver cambios pendientes sin aplicar |
/undo | Revertir último cambio (si fue aplicado) |
/sleep | Pausar sesión, mantiene state |
Atajos de teclado
| Tecla | Acción |
|---|---|
Ctrl+C (1 vez) | Cancelar el response actual |
Ctrl+C (2 veces) | Salir de la sesión |
Ctrl+D | Salir si línea vacía |
Ctrl+L | Limpiar pantalla (no afecta history) |
Up / Down | Navegar comandos previos |
Tab | Autocompletar 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.