A plugin that lets coding agents call one another as durable, recoverable sub-agents.
Agent Caller lets Claude Code, Codex, and other MCP-compatible coding agents call one another as durable, recoverable sub-agents. Claude Code and Codex are the built-in hosts and providers today; the shared MCP lifecycle is designed to extend to more coding agents. Each agent keeps a stable identity, role, provider conversation, and local history across messages, provider process exits, and host restarts.
Latest: v0.2.0 — Claude Code is now a first-class host alongside Codex, sharing the same agents and state. A durable agent can also select
trusted,guarded, orobserverper run without losing its conversation; omitting the run profile returns to the agent's default.
Claude Code and Codex already have capable native agent systems: you can watch them work, assign roles, organize a team, and approve their actions. Agent Caller does not replace those systems. It adds a cross-provider orchestration layer where three properties become first-class:
- Recoverable conversations. Native sub-agents are tied to their hosting task. Once a member is released or the host process exits, the coordinator does not retain a durable member it can address later. Agent Caller persists the agent identity and provider recovery handle, so the next message continues the same conversation, role, and history.
- Codex and Claude Code in both directions, from either host. Either host can delegate to either provider: a Codex host can ask a Claude reviewer for an independent second opinion; a Claude Code host can spin up a Codex implementer; either can coordinate a mixed-provider team.
- A unified authority model. Every run selects an explicit sandbox and approval profile instead of inheriting the parent host session's authority. The same durable agent may change profile between turns without losing its conversation. Claude Code and Codex requests are exposed and recorded through the same interface; interrupted requests expire safely and are never silently approved or replayed.
Together, these make Agent Caller a cross-provider, recoverable, and permission-controlled sub-agent orchestration layer.
Agent Caller separates the host (the session that loads the plugin and calls the tools) from the provider (the engine that backs each agent).
| Can be a Host | Can be a Provider | |
|---|---|---|
| Claude Code | Yes | Yes |
| Codex | Yes | Yes |
Any host can drive any provider. A Claude Code host can run a Claude Code reviewer, a Codex implementer, or both; a Codex host can do the same in reverse. A Claude Code provider agent is always an independent process and context, never the host session itself.
Requirements: Node.js 22 or newer, plus the CLI for each host/provider you want to use — a current Codex CLI (with Plugin and App Server support) and/or a current Claude Code CLI. One plugin install serves a host; both hosts can share the same clone.
The Codex host and the Claude Code host use separate, official plugin systems, so each has its own two-line install. Both load the same plugin directory, the same MCP server, and the same durable state.
git clone https://github.com/Johnny-xuan/Agent-Caller.git
cd Agent-Caller
codex plugin marketplace add "$PWD"
codex plugin add agent-caller@agent-callerCodex marketplace manifest:
.agents/plugins/marketplace.json. MCP
config: plugins/agent-caller/.mcp.json.
git clone https://github.com/Johnny-xuan/Agent-Caller.git
cd Agent-Caller
claude plugin marketplace add "$PWD"
claude plugin install agent-caller@agent-callerClaude marketplace manifest:
.claude-plugin/marketplace.json. MCP
config: plugins/agent-caller/.mcp.claude.json,
which locates the server via ${CLAUDE_PLUGIN_ROOT} as Claude Code requires.
npm --prefix plugins/agent-caller ci --omit=optional
npm --prefix plugins/agent-caller run doctor
codex plugin list # Codex host
claude plugin list # Claude Code host
claude mcp list # should show plugin:agent-caller:agent-caller -> Connecteddoctor checks Node.js, Claude Code, Codex, and Codex App Server availability.
The plugin also installs its locked runtime dependencies automatically on first
start.
Plugins and MCP tools do not hot-load into an existing session. Start a new Codex task or Claude Code session, then say:
Use Agent Caller. List the Claude Code and Codex models available in this
workspace, ask me which model and effort to use, then create an architect and a
reviewer to analyze this project.
On first use of each provider in a session, Agent Caller reads its live model catalog and asks you to choose the model and reasoning effort.
Install with a Coding Agent
Give either prompt to Codex, Claude Code, or another coding agent that can run terminal commands. The two prompts install for different hosts; both can run on the same clone.
Claude Code host:
Install Agent Caller for my Claude Code host and verify it end to end.
Repository: https://github.com/Johnny-xuan/Agent-Caller
Plugin: agent-caller@agent-caller
Do the work instead of only describing commands:
1. Check Node.js and npm. Node.js must be 22 or newer.
2. Check whether the Claude Code CLI and the Codex CLI are installed. Report
their executable paths and current versions. Look up the latest stable
versions from the official Anthropic and OpenAI release channels. If either
CLI is missing or outdated, show me the official install or update command
and ask before changing it. Preserve my existing package manager and
configuration.
3. Clone the repository into a stable local directory, or update the existing
clone after confirming it is the same repository.
4. Run:
npm --prefix plugins/agent-caller ci --omit=optional
npm --prefix plugins/agent-caller run doctor
Diagnose real failures instead of claiming success.
5. Register the repository root as a local Claude Code marketplace with
`claude plugin marketplace add <repo-root>` if the `agent-caller` marketplace
is absent. Do not remove or overwrite unrelated marketplaces.
6. Install with `claude plugin install agent-caller@agent-caller`, then verify
the installed and enabled result with `claude plugin list`.
7. Confirm the MCP server loads by running `claude mcp list`; the
`plugin:agent-caller:agent-caller` server must show Connected. Explain that
the plugin and its MCP server load only in a new Claude Code session (or via
/reload-plugins), so a fresh session is required before the tools appear.
8. Tell me that the first use of each provider should call `list_models` and ask
me to choose model and effort.
9. Give me one ready-to-use prompt that, in a new Claude Code session, lists the
Claude Code and Codex models in this workspace and creates a durable agent
team, then report every command you ran and the final installed version.
Codex host:
Install Agent Caller for my local Codex and verify it end to end.
Repository: https://github.com/Johnny-xuan/Agent-Caller
Plugin: agent-caller@agent-caller
Do the work instead of only describing commands:
1. Check Node.js and npm. Node.js must be 22 or newer.
2. Check whether both Codex CLI and Claude Code CLI are installed. Report their
executable paths and current versions. Look up the latest stable versions
from the official OpenAI and Anthropic release channels. If either CLI is
missing or outdated, show me the official install or update command and ask
before changing it. Preserve my existing package manager and configuration.
3. Clone the repository into a stable local directory, or update the existing
clone after confirming it is the same repository.
4. Run:
npm --prefix plugins/agent-caller ci --omit=optional
npm --prefix plugins/agent-caller run doctor
Diagnose real failures instead of claiming success.
5. Inspect `codex plugin marketplace list`. Register the repository root as a
local marketplace with `codex plugin marketplace add <repo-root>` if the
`agent-caller` marketplace is absent. Do not remove or overwrite unrelated
marketplaces.
6. Install with `codex plugin add agent-caller@agent-caller`, then verify
the installed and enabled result with `codex plugin list`.
7. Explain that the plugin loads only in a new Codex task. Tell me that the first
use of each provider should call `list_models` and ask me to choose model
and effort.
8. Give me one ready-to-use prompt that creates a Claude Code reviewer and a
Codex implementer in my current workspace, then report every command you ran
and the final installed version.
flowchart LR
Lead["Claude Code or Codex host"] --> MCP["11 MCP tools"]
MCP --> Caller["Agent Caller"]
Policy["Sandbox + approval ceiling"] --> Caller
Caller <--> Store[("Durable agents, runs, and history")]
Caller --> ClaudeAdapter["Claude Code provider"]
Caller --> CodexAdapter["Codex provider"]
ClaudeAdapter <--> ClaudeSession[("Claude session")]
CodexAdapter <--> CodexThread[("Codex thread")]
The host addresses agents by a stable Agent Caller name or ID. Provider session and thread identifiers remain internal recovery handles.
| Area | MCP tools |
|---|---|
| Create and communicate | create_agent, send_message, respond_to_request |
| Inspect | get_agent, get_history, list_agents, list_models |
| Lifecycle | release_agent, stop_run, resume_agent, delete_agent |
Claude Code conversations use the Claude Agent SDK when available, with a CLI fallback for compatible non-interactive work. Codex conversations use Codex App Server v2. Different agents can run in parallel; each agent accepts one conversation-mutating run at a time.
| Profile | Sandbox | Approval | Use |
|---|---|---|---|
trusted |
danger_full_access |
autonomous |
Normal local coding; default |
guarded |
workspace_write |
on_request |
Explicitly supervised or high-impact work |
observer |
read_only |
fail_closed |
Strict local inspection with reduced tools |
The profile selected at creation is the agent's default. send_message may
select another profile for one run; omitting it on the next turn returns to the
agent default. A profile cannot change while a run is already active.
Profiles are optional advanced controls. Ordinary delegation defaults to
trusted, including review and web research; Agent Caller does not infer a
narrower profile from the task label alone. Use guarded or observer only
when the user explicitly wants containment or after an explicit authority
decision for high-impact work.
trusted removes routine approval interruptions, while a shared delegation
prompt still limits both providers to the assigned work. That prompt is a
behavioral contract, not a security boundary. Use guarded or observer when
technical containment is required.
Product behavior:
Agent and operator references:
- MCP tools
- Lifecycle and recovery
- Permissions and requests
- Models and reasoning effort
- Project and global scopes
- Provider behavior
- Troubleshooting
cd plugins/agent-caller
npm ci --omit=optional
npm test
npm run doctorRuntime state defaults to ~/.codex/agent-caller. Set
AGENT_CALLER_DATA_DIR to use an isolated development or test store.
