Skip to content

Goose on Codex Pooler

Configure Goose’s OpenAI provider with OPENAI_HOST and OPENAI_BASE_PATH. Point the host at Codex Pooler and keep the Pool API key in the OPENAI_API_KEY environment variable or Goose’s secret storage.

Codex Pooler Goose integration

  • Goose installed and ready to use.
  • A Codex Pooler URL reachable from the client.
  • A Pool API key and a model available to that Pool.

Use a Pool API key for model requests. Operator MCP access is optional and uses a separate token.

Put persistent Goose provider and extension settings in config.yaml:

OS Config file
macOS ~/.config/goose/config.yaml
Linux ~/.config/goose/config.yaml
Windows %APPDATA%\Block\goose\config\config.yaml

Goose also keeps related files in the same config area: permission.yaml for tool permission levels, secrets.yaml when file-based secret storage is used, permissions/tool_permissions.json for runtime permission decisions, and prompts/ for prompt templates. Direct edits usually require restarting existing Goose sessions; goose info -v shows the active settings.

You can also manage settings from Goose Desktop Settings or by running goose configure in Goose CLI. Environment variables have higher precedence than the config file, so OPENAI_API_KEY can stay outside YAML.

Set CODEX_POOLER_API_KEY to your Pool API key, then export OPENAI_API_KEY in the shell that starts Goose, or use Goose’s secret storage:

Terminal window
export OPENAI_API_KEY="$CODEX_POOLER_API_KEY"

Add the provider settings to config.yaml:

config.yaml
GOOSE_PROVIDER: openai
GOOSE_MODEL: gpt-6-sol
OPENAI_HOST: https://codex-pooler.example.com
OPENAI_BASE_PATH: v1/responses
GOOSE_CONTEXT_LIMIT: 828400
GOOSE_MAX_TOKENS: 128000
GOOSE_AUTO_COMPACT_THRESHOLD: 0.95

For local setup, change OPENAI_HOST to http://localhost:4000.

Set GOOSE_MODEL to a model available to your Pool.

Goose reads GOOSE_CONTEXT_LIMIT and GOOSE_MAX_TOKENS into its model config. The 828400 value above is a long-profile example for a model whose selected Pool catalog source reports an 872000-token raw ceiling. Provider accounts can temporarily report different ceilings for the same model; a selected 272000-token profile exposes 258400 instead. Use /v1/models.context_length as the authoritative GOOSE_CONTEXT_LIMIT, not the raw ceiling. For the long-profile example, Goose’s 0.95 auto-compaction threshold starts compaction at 786980 tokens.

Check the headless CLI path with tool access enabled:

Terminal window
export OPENAI_API_KEY="$CODEX_POOLER_API_KEY"
goose run \
--no-session \
--provider openai \
--model gpt-6-sol \
--with-builtin developer \
--text 'Use your developer tool to create goose-ok.txt containing exactly: goose ok. Then reply with exactly: goose ok'

Confirm that goose-ok.txt contains the expected text. In Codex Pooler’s request logs, match the request time, API key, model, and final status to your test. A reply alone does not confirm that the client used your Pooler instance.

For optional operator MCP metadata access, add a remote Streamable HTTP extension. Codex Pooler model use does not require this. Goose stores remote extension headers in its config, so use a dedicated MCP token.

config.yaml
# Optional operator-only MCP metadata add-on. Omit for model/runtime use.
extensions:
codex_pooler:
enabled: true
type: streamable_http
name: codex_pooler
uri: https://codex-pooler.example.com/mcp
headers:
Authorization: "Bearer <operator-mcp-token>"
timeout: 300
bundled: null
available_tools: []

For local MCP setup, change the extension uri to http://localhost:4000/mcp.

Use a Pool API key for OpenAI-compatible model requests and an operator MCP token for /mcp. Do not reuse the Pool API key for MCP.

This client uses Codex Pooler’s narrow OpenAI-compatible /v1 surface. For shared route support and limits, see OpenAI-compatible SDKs.