Codex CLI v0.134.0 Release Guide: Conversation History Search, MCP Concurrency, and Profile Migration
Codex CLI v0.134.0 Release Guide: Conversation History Search, MCP Concurrency, and Profile Migration
Codex CLI v0.134.0 shipped on 26 May 2026 1, one of the quieter point releases of the month but one that meaningfully changes three everyday workflows: finding past sessions, running read-only MCP tools in parallel, and managing named configuration profiles. This article unpacks every change, shows updated configuration, and flags what you need to migrate.
What Shipped
The release groups into six areas:
- Conversation history search — case-insensitive, full-content search across local session transcripts.
- Concurrent read-only MCP tool execution — tools advertising
readOnlyHintnow run in parallel. - Per-server MCP environment targeting —
env_varsgains explicitsourcecontrol for local vs remote executors. - Profile selector unification —
--profilebecomes the single activation path; legacy[profiles.*]tables are rejected. - Tool schema reliability — connector tools preserve
$ref/$defsstructures and compact oversized schemas. - Richer extension and hook context — extensions receive conversation history; hooks receive subagent identity.
flowchart LR
subgraph v0.134.0
A[History Search] --> B[Find Past Sessions]
C[readOnlyHint] --> D[Parallel MCP Tools]
E[env_vars source] --> F[Local / Remote Targeting]
G[--profile] --> H[Unified Activation]
I[Schema Compaction] --> J[Reliable Tool Discovery]
K[Hook Context] --> L[Subagent Identity]
end
Conversation History Search
Every interactive Codex session is persisted as a JSONL rollout under ~/.codex/sessions/YYYY/MM/DD/ 2. Until v0.134.0, finding a previous session meant either using the resume picker (/resume or codex resume) or manually grepping the JSONL files. The new search feature adds case-insensitive content matching with result previews directly from the TUI 1.
How It Works
From an active session, type /search followed by your query. Results display matched session excerpts with timestamps, and selecting a result opens that session via the existing resume flow.
From the command line:
# Search all local sessions for a term
codex resume --search "database migration"
# Combine with directory scoping
codex resume --search "failing test" --all
The --all flag extends search beyond the current working directory, matching sessions from any project 2.
Practical Patterns
For teams that use Codex CLI heavily, conversation history search turns past sessions into a knowledge base. Common uses:
- Audit trail — find the session where a specific file was modified or a deployment command was executed.
- Pattern reuse — locate a previous prompt that solved a similar problem and fork from it.
- Incident review — search for error messages to find how a colleague resolved them.
Concurrent Read-Only MCP Tool Execution
This is the headline performance improvement. When an MCP server declares a tool with readOnlyHint: true in its tool annotations, Codex CLI now executes those tools concurrently rather than sequentially 1. The default concurrency limit is governed by agents.max_threads, which defaults to 6 3.
Why This Matters
Consider a typical workflow composing multiple MCP servers — a documentation server, a GitHub server in read-only mode, and a database schema explorer. Previously, each tool call waited for the preceding one to finish. With readOnlyHint, a prompt like “summarise the open issues, check the API docs for rate limits, and show me the users table schema” can fan out all three queries simultaneously.
sequenceDiagram
participant Codex
participant GitHub MCP
participant Docs MCP
participant DB MCP
Note over Codex: Pre-v0.134 (sequential)
Codex->>GitHub MCP: list_issues (readOnly)
GitHub MCP-->>Codex: result
Codex->>Docs MCP: search_docs (readOnly)
Docs MCP-->>Codex: result
Codex->>DB MCP: describe_table (readOnly)
DB MCP-->>Codex: result
Note over Codex: v0.134+ (concurrent)
par readOnlyHint tools
Codex->>GitHub MCP: list_issues
Codex->>Docs MCP: search_docs
Codex->>DB MCP: describe_table
end
GitHub MCP-->>Codex: result
Docs MCP-->>Codex: result
DB MCP-->>Codex: result
MCP Server Requirements
The concurrency optimisation is opt-in on the server side. An MCP server must declare readOnlyHint in its tool annotations 4:
{
"name": "list_issues",
"description": "List open issues",
"annotations": {
"readOnlyHint": true
}
}
If your MCP server does not advertise this hint, tools continue to execute sequentially. Mutating tools (creating issues, writing files, running commands) should never set this flag.
Tuning Concurrency
Adjust the thread ceiling in ~/.codex/config.toml:
[agents]
max_threads = 8 # default is 6
Higher values benefit setups with many read-only MCP servers but increase memory pressure. Monitor with codex doctor 5 if sessions become sluggish.
Per-Server MCP Environment Targeting
MCP server configuration in config.toml now supports explicit source declarations on env_vars, distinguishing between variables read from the local shell environment and those resolved on a remote executor 1 3.
Configuration Syntax
[mcp_servers.prod-db]
command = "db-mcp-server"
args = ["--read-only"]
# Simple form: reads from local environment (default)
env_vars = ["DATABASE_URL", "DB_READ_REPLICA"]
# Object form: explicit source targeting
[[mcp_servers.prod-db.env_vars]]
name = "DATABASE_URL"
source = "local"
[[mcp_servers.prod-db.env_vars]]
name = "REMOTE_DB_TOKEN"
source = "remote"
The source = "local" setting reads from Codex’s parent process environment. The source = "remote" setting resolves the variable on the remote executor, which is relevant only when using codex remote-control or executor-backed workflows 3.
When to Use Remote Targeting
Remote environment targeting matters in two scenarios:
- Remote executors — when running
codex remote-controlagainst a cloud VM, the executor environment may contain credentials (e.g., instance-profile tokens, Kubernetes service account tokens) that do not exist locally. - Hybrid setups — a local MCP server for documentation alongside a remote MCP server for production database access, each needing different credential sources.
⚠️ Streamable HTTP servers do not support remote environment placement as of v0.134.0. This applies only to STDIO-transport servers 3.
Profile Selector Unification
v0.134.0 makes --profile the canonical way to activate a named profile, unifying behaviour across the CLI, TUI permissions, and sandbox flows 1. The legacy [profiles.profile-name] table syntax inside config.toml is now rejected with a migration warning 6.
Migration Path
Before (deprecated):
# ~/.codex/config.toml — OLD STYLE, rejected in v0.134.0
[profiles.deep-review]
model = "gpt-5.5"
model_reasoning_effort = "xhigh"
approval_mode = "unless-allow-listed"
After (v0.134.0+):
# ~/.codex/deep-review.config.toml — NEW STYLE
model = "gpt-5.5"
model_reasoning_effort = "xhigh"
approval_mode = "unless-allow-listed"
Each profile lives in its own file at $CODEX_HOME/profile-name.config.toml. The file uses top-level keys — no wrapping table 6.
Activation
# CLI flag
codex --profile deep-review
# Environment variable
export CODEX_PROFILE=deep-review
codex
# Default profile in config.toml
# ~/.codex/config.toml
profile = "deep-review"
Recommended Profile Names
Name profiles after environments rather than individuals or projects 6:
| Profile | Purpose |
|---|---|
dev |
Fast iteration, suggest approval, Spark model |
ci |
Non-interactive, auto-edit approval, --ephemeral |
review |
High reasoning effort, unless-allow-listed |
prod |
Locked sandbox, restricted MCP servers, audit hooks |
Tool Schema Reliability
Connector tools (MCP tools exposed through the tool protocol) now preserve local $ref and $defs JSON Schema structures rather than inlining them 1. For schemas exceeding the token budget, Codex compacts them before exposure to the model, reducing hallucinated parameter names.
This is a behind-the-scenes improvement, but if you maintain an MCP server with complex nested schemas, you should see fewer cases of the model inventing parameters that do not exist.
Richer Extension and Hook Context
Extensions now receive conversation history in their tool context, enabling tools that reason across the full session 1. Hooks gain subagent identity in their input payload, allowing hook logic to differentiate between the primary agent and its subagents.
For hooks, the input JSON now includes:
{
"event": "on_agent_tool_call",
"agent_id": "main",
"subagent_id": "subagent-3a9f",
"tool_name": "write_file",
"tool_input": { "path": "src/index.ts", "content": "..." }
}
This enables patterns like:
- Subagent-specific policies — block file writes from subagents while allowing them from the primary agent.
- Audit differentiation — log which agent in a multi-agent session performed each action.
Bug Fixes
The release also addresses several reliability issues 1:
- Remote WebSocket reconnection — the remote client now reconnects more reliably after network interruptions.
- Windows TUI rendering — fixes for visual artefacts in Windows Terminal and ConPTY environments.
- Workspace-specific usage limits — usage-limit messages now correctly reference the active workspace rather than the global quota.
- Node-based tool proxy — environment variables are now forwarded correctly to Node.js-based MCP tool proxies.
Upgrade Path
# Self-update (if installed via npm)
npm update -g @openai/codex
# Or via the built-in updater
codex self-update
# Verify
codex --version
# 0.134.0
After updating:
- Migrate profiles — move any
[profiles.*]tables fromconfig.tomlinto separate*.config.tomlfiles. - Audit MCP servers — mark genuinely read-only tools with
readOnlyHinton the server side to benefit from concurrent execution. - Test env_vars — if using remote executors, verify that
sourcedeclarations resolve correctly.
Citations
-
OpenAI, “Codex CLI v0.134.0 Release Notes,” GitHub Releases, 26 May 2026. https://github.com/openai/codex/releases ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
-
OpenAI, “Features — Codex CLI,” OpenAI Developers, 2026. https://developers.openai.com/codex/cli/features ↩ ↩2
-
OpenAI, “Configuration Reference — Codex,” OpenAI Developers, 2026. https://developers.openai.com/codex/config-reference ↩ ↩2 ↩3 ↩4
-
Model Context Protocol, “Tool Annotations,” MCP Specification, 2026. https://modelcontextprotocol.io/specification/2025-03-26/server/tools#annotations ↩
-
OpenAI, “Codex CLI v0.131.0 Release Notes — codex doctor,” GitHub Releases, 18 May 2026. https://github.com/openai/codex/releases ↩
-
OpenAI, “Advanced Configuration — Codex,” OpenAI Developers, 2026. https://developers.openai.com/codex/config-advanced ↩ ↩2 ↩3