Goose
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.
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.
GOOSE_PROVIDER: openaiGOOSE_MODEL: gpt-5.5OPENAI_HOST: https://codex-pooler.example.comOPENAI_BASE_PATH: v1/chat/completionsGOOSE_CONTEXT_LIMIT: 272000GOOSE_MAX_TOKENS: 128000GOOSE_AUTO_COMPACT_THRESHOLD: 0.52For local setup, change OPENAI_HOST to http://localhost:4000.
Goose reads GOOSE_CONTEXT_LIMIT and GOOSE_MAX_TOKENS into its model config. Its auto-compaction threshold is a ratio of the context limit, not an output reserve, so 0.52 compacts before prompt history can crowd out a 128k completion in Codex Pooler’s 272k gpt-5.5 window.
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-5.5 \ --with-builtin developer \ --text 'Use your developer tool to create goose-ok.txt containing exactly: goose ok. Then reply with exactly: goose ok'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.