Skip to content

Integrations

Use FullsendAI with Codex CLI

Codex can use any provider that serves OpenAI's Responses API, which FullsendAI does. Connect it in one command, or add FullsendAI to its config file by hand.

Set it up#

The one-command way is npx fullsendai connect, which writes the settings below for you and keeps your own values aside so disconnect puts them back. Doing it by hand takes the same settings:

~/.codex/config.toml
model = "nef-4.0"model_provider = "fullsend"[model_providers.fullsend]name = "FullsendAI"base_url = "https://fullsendai.com/v1"env_key = "FULLSEND_API_KEY"wire_api = "responses"
shell
export FULLSEND_API_KEY=fs_live_...codex
SettingWhy
base_urlFullsendAI's OpenAI-compatible address, ending in /v1.
env_keyThe environment variable Codex reads the key from; the key never goes in the file.
wire_api = "responses"Tells Codex to use OpenAI’s Responses API, which FullsendAI serves at /v1/responses. Current Codex releases take only this.
These go into your own config.toml. Everything else in it — your other settings, your own profiles, your comments — is left exactly as it is, and disconnect puts back the values FullsendAI replaced.
Codex's own tools (running commands, editing files, sub-agents) work as they do with OpenAI's models. Its hosted web search doesn't: FullsendAI has no web search to run it with, so it's left out of the model's tools.

Replacing Codex's own prompt#

Codex sends its own instructions to the model on every call, alongside FullsendAI's system prompt. If you'd rather the model were steered only by FullsendAI's, connect with --bare-prompt — or pick Replace it with FullsendAI's when the CLI asks:

shell
npx fullsendai connect --tools codex --bare-prompt

This adds model_instructions_file to your config, pointing at a prompt FullsendAI keeps in ~/.fullsendai/agent-prompt.md. Codex treats that setting as a replacement for its built-in instructions, so its own prompt no longer reaches the model.

The replacement isn't empty. Codex's instructions are what tell the model that edits go through apply_patch, that it should keep going until the task is done, and how to search — leaving those out gives you a model with tools attached rather than a working agent. What the replacement leaves out is the part that steers answers: the identity, and any policy about what to decline.

A model_instructions_file you set yourself is left alone unless you pass --bare-prompt, and it comes back exactly as it was on disconnect.

FullsendAI's models in the picker#

Codex builds its model menu, with each model's reasoning levels, from a catalog. On macOS and Windows, npx fullsendai connect adds FullsendAI's models to it: the catalog is checked against the Codex you have installed before Codex is pointed at it, and a background job checks it again when Codex or its app updates, so an update doesn't leave Codex unable to start. On macOS that happens the moment Codex changes; on Windows a hidden scheduled task looks every two minutes. Restart Codex, or reopen the ChatGPT app (macOS) or the Codex app (Windows), to see them.

On Linux nothing would keep the catalog current through updates, so the picker keeps listing OpenAI's models. What runs is model in config.toml, which connecting sets; change it with the CLI and start a new session:

shell
fullsendai model glm-5.3-flash

Back to ChatGPT's models#

One command switches Codex back to your ChatGPT plan or OpenAI key, and another brings FullsendAI back. Your FullsendAI key and model are kept in between, and FullsendAI stays defined as an inactive provider so a chat you started on it still opens — a full disconnect takes everything out. If the Codex app is open, its engine restarts so the switch shows there at once (its windows stay open); a task Codex is running there stops. ChatGPT's models need your own ChatGPT sign-in or an OpenAI key.

shell
npx fullsendai codex chatgpt      # ChatGPT's modelsnpx fullsendai codex fullsendai   # FullsendAI's again

Recommended models#

Model IDUse it forPrice / 1M in / out
nef-4.0Security research: code review, exploit analysis, CTFs and pentest tooling.$0.60 / $2.40

Switching models#

  • Every connected tool at once: fullsendai model glm-5.3-flash. This rewrites the window settings too, which Codex won't recompute on its own.
  • For one run: codex -m glm-5.3-flash, or with the window: codex -c model="glm-5.3-flash" -c model_context_window=1048575.
  • In a session: /model.
  • For good: change model at the top of ~/.codex/config.toml.

Troubleshooting#

SymptomFix
wire_api = "chat" is no longer supportedAn older setup: set wire_api = "responses" in config.toml.
401 invalid_api_keyFULLSEND_API_KEY isn't set in the shell that runs Codex, or the key was revoked.
404 model_not_foundThe model isn't a FullsendAI ID (an OpenAI name like gpt-…, say). Use one from Models.
402 insufficient_quotaAdd credit or turn on auto top-up.

Every call Codex makes shows in Logs with its status and reason.

Stuck? Email [email protected]System statusChangelog