Using Codex CLI with abliteration.ai
Use Codex CLI with abliteration.ai as a custom OpenAI Responses provider. Set ABLITERATION_API_KEY, point base_url at api.abliteration.ai/v1.
This guide shows how to use Codex CLI with abliteration.ai as a custom OpenAI Responses provider. Codex CLI can target any provider that implements the OpenAI Responses API, and abliteration.ai exposes /v1/responses as a first-class public endpoint.
Setup is entirely declarative: define a named provider block, point base_url at https://api.abliteration.ai/v1, set wire_api to responses, supply your ak_ API key through ABLITERATION_API_KEY, and select abliterated-model.
Disable native web search with -c 'tools.web_search=false', because abliteration.ai does not support Codex web search yet.
Use plain codex for an ongoing interactive TUI session. The initial prompt is optional, so the simplest start is just codex plus your provider flags. Use codex exec only for one-off automation.
# Start an interactive Codex session with no initial prompt
export ABLITERATION_API_KEY="ak_YOUR_API_KEY"
# If you are in a scratch directory, initialize Git once first.
git init
codex \
-s workspace-write \
-m abliterated-model \
-c 'tools.web_search=false' \
-c 'model_provider="abliteration"' \
-c 'model_providers.abliteration.name="abliteration.ai"' \
-c 'model_providers.abliteration.base_url="https://api.abliteration.ai/v1"' \
-c 'model_providers.abliteration.wire_api="responses"' \
-c 'model_providers.abliteration.env_key="ABLITERATION_API_KEY"' \
-c 'model_providers.abliteration.supports_websockets=false'
# Then type your first prompt inside Codex, for example:
# Create a test html pagePrerequisites
Before you start, make sure the basics are in place.
Provider settings
Codex needs a named custom provider with the Responses wire format enabled.
| Setting | Value | Purpose |
|---|---|---|
model_provider | abliteration | Selects your custom provider block for this run. |
model_providers.abliteration.name | abliteration.ai | Readable provider label shown by Codex. |
model_providers.abliteration.base_url | https://api.abliteration.ai/v1 | Targets the public abliteration.ai API domain. |
model_providers.abliteration.wire_api | responses | Tells Codex to speak the OpenAI Responses API. |
model_providers.abliteration.env_key | ABLITERATION_API_KEY | Reads your bearer token from the shell environment. |
model_providers.abliteration.supports_websockets | false | Uses the HTTP Responses path instead of websocket transport. |
tools.web_search | false | Disables Codex web search, which is not supported by abliteration.ai yet. |
Start a session
Use plain codex to open the interactive session UI. That keeps the conversation alive so you can continue giving follow-up prompts in the same session.
Interactive codex does not support --skip-git-repo-check, so in a scratch directory you should run git init first.
You do not need to pass an initial prompt on the command line. Start the session first, then type your request in the TUI.
export ABLITERATION_API_KEY="ak_YOUR_API_KEY"
# In a scratch directory, do this once:
git init
codex \
-s workspace-write \
-m abliterated-model \
-c 'tools.web_search=false' \
-c 'model_provider="abliteration"' \
-c 'model_providers.abliteration.name="abliteration.ai"' \
-c 'model_providers.abliteration.base_url="https://api.abliteration.ai/v1"' \
-c 'model_providers.abliteration.wire_api="responses"' \
-c 'model_providers.abliteration.env_key="ABLITERATION_API_KEY"' \
-c 'model_providers.abliteration.supports_websockets=false'Optional initial prompt
If you prefer, you can still attach the first prompt directly on the command line. This starts the same interactive session, just with the first user message prefilled.
export ABLITERATION_API_KEY="ak_YOUR_API_KEY"
codex \
-s workspace-write \
-m abliterated-model \
-c 'tools.web_search=false' \
-c 'model_provider="abliteration"' \
-c 'model_providers.abliteration.name="abliteration.ai"' \
-c 'model_providers.abliteration.base_url="https://api.abliteration.ai/v1"' \
-c 'model_providers.abliteration.wire_api="responses"' \
-c 'model_providers.abliteration.env_key="ABLITERATION_API_KEY"' \
-c 'model_providers.abliteration.supports_websockets=false' \
"Create a test html page"Resume later
Codex sessions can be reopened after you close the terminal. This is optional and not required to start a session.
# Resume the most recent Codex session
codex resume --last
# Or resume a specific session id
codex resume <session_id>One-off commands
Use codex exec when you only want a single prompt-response run instead of an ongoing session.
export ABLITERATION_API_KEY="ak_YOUR_API_KEY"
codex exec --skip-git-repo-check \
-m abliterated-model \
-c 'tools.web_search=false' \
-c 'model_provider="abliteration"' \
-c 'model_providers.abliteration.name="abliteration.ai"' \
-c 'model_providers.abliteration.base_url="https://api.abliteration.ai/v1"' \
-c 'model_providers.abliteration.wire_api="responses"' \
-c 'model_providers.abliteration.env_key="ABLITERATION_API_KEY"' \
-c 'model_providers.abliteration.supports_websockets=false' \
"Reply with OK only. Do not run any commands."How it works
Codex sends OpenAI Responses-style requests to abliteration.ai, including follow-up tool-call turns during agent runs.
Scratch directories
Codex prefers to run in a trusted Git directory. Interactive codex and non-interactive codex exec behave differently here.
Troubleshooting
The most common setup issues are configuration or local sandboxing.