You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add "Local Claude (subscription)" and "Local Codex (subscription)" options to the /agent model picker. When selected, the agent runs the user's prompt through the locally-installed claude (Claude Code) or codex (OpenAI Codex CLI) binary on disk, using whatever auth those CLIs already have set up — i.e. the user's existing Claude / OpenAI subscription. No Warp credits should be consumed for these turns.
The conversation surface in Warp should look identical to the cloud-agent path:
Tool calls (Bash, Read, Edit, Grep, Glob, Write) render as the same Warp ToolCall cards used by cloud agents
Multi-turn context is preserved (prior turns visible to the CLI)
The top-bar AI status pill shows the active local model + token usage (e.g. Local Claude · 23.4k / 200k)
A bare clear in the terminal also resets the local-agent conversation so the CLI's context window matches what the user sees
This is opt-in per-conversation via the model picker; the existing cloud-agent flow is untouched when those options aren't selected.
Is your feature request related to a problem? Please describe.
I already pay for a Claude (Claude Code) subscription and an OpenAI (Codex) subscription. When I use Warp's /agent mode, every turn also burns Warp request credits — even though my own subscriptions could already cover the call. Today there's no way to tell /agent "for this conversation, use my local CLI instead of Warp's backend."
Cloud agent with model selector — still routes through Warp and counts against Warp credits.
Just running claude / codex directly in the terminal — works, but loses Warp's UI affordances: tool-call cards, scrollable conversation history, terminal-block context auto-injection, attachments.
The user need is "give me Warp's /agent UX, but billed against my own existing subscription, not Warp's."
Additional context
I have a working prototype on a feature branch (ahmet/local-subscription-agent) gated behind a local_subscription_agent cargo feature. Implementation sketch:
New synthetic model ids local-claude / local-codex registered in app/src/ai/llms.rs
Dispatch in app/src/ai/agent/api/impl.rs short-circuits local-* ids to a synthetic ResponseStream backed by a tokio task
Task spawns the CLI as a subprocess (claude -p - / codex exec --json -), writes the prompt envelope to stdin, parses stream-json output line-by-line
Each tool_use / tool_result content block (Claude) and command_execution item (Codex) is translated into the matching RunShellCommand / ReadFiles / Grep / FileGlobV2 / ApplyFileDiffs proto so the UI is identical to cloud
Stderr is drained in a background task to avoid the 64 KB pipe deadlock with --verbose
Token usage per turn is recorded in a global OnceLock<RwLock<Option<LocalUsageSnapshot>>> slot read by the workspace top-bar
Happy to file a spec PR (specs/GH<this-issue>/product.md + tech.md) once the issue is triaged with ready-to-spec if maintainers want the full spec flow before reviewing the code.
Pre-submit Checks
Describe the solution you'd like?
Add "Local Claude (subscription)" and "Local Codex (subscription)" options to the
/agentmodel picker. When selected, the agent runs the user's prompt through the locally-installedclaude(Claude Code) orcodex(OpenAI Codex CLI) binary on disk, using whatever auth those CLIs already have set up — i.e. the user's existing Claude / OpenAI subscription. No Warp credits should be consumed for these turns.The conversation surface in Warp should look identical to the cloud-agent path:
Local Claude · 23.4k / 200k)clearin the terminal also resets the local-agent conversation so the CLI's context window matches what the user seesThis is opt-in per-conversation via the model picker; the existing cloud-agent flow is untouched when those options aren't selected.
Is your feature request related to a problem? Please describe.
I already pay for a Claude (Claude Code) subscription and an OpenAI (Codex) subscription. When I use Warp's
/agentmode, every turn also burns Warp request credits — even though my own subscriptions could already cover the call. Today there's no way to tell/agent"for this conversation, use my local CLI instead of Warp's backend."The closest existing options don't solve this:
claude/codexdirectly in the terminal — works, but loses Warp's UI affordances: tool-call cards, scrollable conversation history, terminal-block context auto-injection, attachments.The user need is "give me Warp's
/agentUX, but billed against my own existing subscription, not Warp's."Additional context
I have a working prototype on a feature branch (
ahmet/local-subscription-agent) gated behind alocal_subscription_agentcargo feature. Implementation sketch:local-claude/local-codexregistered inapp/src/ai/llms.rsapp/src/ai/agent/api/impl.rsshort-circuitslocal-*ids to a syntheticResponseStreambacked by a tokio taskclaude -p -/codex exec --json -), writes the prompt envelope to stdin, parses stream-json output line-by-linetool_use/tool_resultcontent block (Claude) andcommand_executionitem (Codex) is translated into the matchingRunShellCommand/ReadFiles/Grep/FileGlobV2/ApplyFileDiffsproto so the UI is identical to cloud--verboseOnceLock<RwLock<Option<LocalUsageSnapshot>>>slot read by the workspace top-barHappy to file a spec PR (
specs/GH<this-issue>/product.md+tech.md) once the issue is triaged withready-to-specif maintainers want the full spec flow before reviewing the code.Operating system (OS)
macOS
How important is this feature to you?
4