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.

Before you start
Section titled “Before you start”- 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.
Configure the connection
Section titled “Configure the connection”Config file path
Section titled “Config file path”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:
export OPENAI_API_KEY="$CODEX_POOLER_API_KEY"Add the provider settings to config.yaml:
GOOSE_PROVIDER: openaiGOOSE_MODEL: gpt-6-solOPENAI_HOST: https://codex-pooler.example.comOPENAI_BASE_PATH: v1/responsesGOOSE_CONTEXT_LIMIT: 828400GOOSE_MAX_TOKENS: 128000GOOSE_AUTO_COMPACT_THRESHOLD: 0.95For local setup, change OPENAI_HOST to http://localhost:4000.
Choose a model
Section titled “Choose a model”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.
Verify the connection
Section titled “Verify the connection”Check the headless CLI path with tool access enabled:
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.
Operator MCP (optional)
Section titled “Operator MCP (optional)”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.
# 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.
Compatibility notes
Section titled “Compatibility notes”This client uses Codex Pooler’s narrow OpenAI-compatible /v1 surface. For shared route support and limits, see OpenAI-compatible SDKs.