Summary
Warp shipped a standalone Agent CLI with its own config root, separate from the Warp app: CLI settings, MCP, and permissions live under ~/.warp_cli/ (platform variants), and the docs state "the app and the CLI keep separate settings files, so changing one never affects the other." rulesync's warp target writes only the app's paths, so a CLI user cannot sync MCP or permissions at all. Proposed: a new warpcli target (copilot/copilotcli precedent). Two implementation caveats — one affecting the existing warp target — are recorded below.
Recent Releases
Gaps
1. mcp + permissions — the Agent CLI's config root is unreachable
- Upstream (CLI configuration, CLI permissions & profiles):
- CLI settings: macOS
~/.warp_cli/settings.toml, Linux ~/.config/warp-terminal/cli/settings.toml (respects $XDG_CONFIG_HOME), Windows %LOCALAPPDATA%\warp\Warp\config\cli\settings.toml
- CLI MCP:
~/.warp_cli/.mcp.json — "keeps its own MCP server configuration, separate from the Warp app's"
- CLI permissions:
[agents.execution_profiles.default]; the CLI always runs the default profile.
- rulesync: only app paths exist (
src/constants/warp-paths.ts: .warp, .config/warp-terminal, AppData/Local/warp/Warp/config); grep -rn "warp_cli" src/ returns nothing. Rules and skills already work for the CLI because both surfaces share AGENTS.md / .agents/skills/ with the app.
- Follow-up: add a
warpcli target (copilot/copilotcli precedent in src/types/tool-target-tuples.ts) scoped to mcp (global, ~/.warp_cli/.mcp.json) and permissions (global, CLI settings.toml); deliberately leave rules/skills/commands/ignore to warp.
2. Caveat affecting the existing warp target too — command_denylist replaces the built-in denylist
The docs warn: "Setting command_denylist replaces the built-in default denylist, which covers rm, curl, wget, eval, ssh, shells, and other risky command patterns" (permissions & profiles). rulesync generates that array wholesale from canonical deny rules, so one authored deny rule silently removes the built-in protections. Warrants at minimum a generate-time warning.
3. Caveat for the CLI implementation — no migration guard applies
mergeIntoDefaultExecutionProfile() (src/features/permissions/warp-permissions.ts) only merges when [agents.execution_profiles] already exists — correct for the app (avoids pre-empting Warp's migration), but the CLI's settings.toml is "created the first time you change a setting" and is usually absent on a fresh install. The CLI path needs to create the collection directly.
Verified in parity
Rules, ignore (.warpindexingignore), commands/skills (/{skill-name}, $ARGUMENTS/$0), and the two sentinel non-surfaces re-checked: Warp still ships no hook configuration, and subagents remain runtime /orchestrate constructs (the file-visible run_agents permission is already covered by the warp.execution_profile override).
Housekeeping: references/warp.md:10 in the research skill lists global MCP as ~/.agents/.mcp.json; Warp's own global file is ~/.warp/.mcp.json (the implementation is correct; the map row is stale).
References
Summary
Warp shipped a standalone Agent CLI with its own config root, separate from the Warp app: CLI settings, MCP, and permissions live under
~/.warp_cli/(platform variants), and the docs state "the app and the CLI keep separate settings files, so changing one never affects the other." rulesync'swarptarget writes only the app's paths, so a CLI user cannot sync MCP or permissions at all. Proposed: a newwarpclitarget (copilot/copilotcli precedent). Two implementation caveats — one affecting the existingwarptarget — are recorded below.Recent Releases
warp-tuirenamed towarp(PR #13904), establishing the standalone Agent CLI.Gaps
1. mcp + permissions — the Agent CLI's config root is unreachable
~/.warp_cli/settings.toml, Linux~/.config/warp-terminal/cli/settings.toml(respects$XDG_CONFIG_HOME), Windows%LOCALAPPDATA%\warp\Warp\config\cli\settings.toml~/.warp_cli/.mcp.json— "keeps its own MCP server configuration, separate from the Warp app's"[agents.execution_profiles.default]; the CLI always runs thedefaultprofile.src/constants/warp-paths.ts:.warp,.config/warp-terminal,AppData/Local/warp/Warp/config);grep -rn "warp_cli" src/returns nothing. Rules and skills already work for the CLI because both surfaces shareAGENTS.md/.agents/skills/with the app.warpclitarget (copilot/copilotcli precedent insrc/types/tool-target-tuples.ts) scoped to mcp (global,~/.warp_cli/.mcp.json) and permissions (global, CLIsettings.toml); deliberately leave rules/skills/commands/ignore towarp.2. Caveat affecting the existing
warptarget too —command_denylistreplaces the built-in denylistThe docs warn: "Setting
command_denylistreplaces the built-in default denylist, which coversrm,curl,wget,eval,ssh, shells, and other risky command patterns" (permissions & profiles). rulesync generates that array wholesale from canonicaldenyrules, so one authored deny rule silently removes the built-in protections. Warrants at minimum a generate-time warning.3. Caveat for the CLI implementation — no migration guard applies
mergeIntoDefaultExecutionProfile()(src/features/permissions/warp-permissions.ts) only merges when[agents.execution_profiles]already exists — correct for the app (avoids pre-empting Warp's migration), but the CLI'ssettings.tomlis "created the first time you change a setting" and is usually absent on a fresh install. The CLI path needs to create the collection directly.Verified in parity
Rules, ignore (
.warpindexingignore), commands/skills (/{skill-name},$ARGUMENTS/$0), and the two sentinel non-surfaces re-checked: Warp still ships no hook configuration, and subagents remain runtime/orchestrateconstructs (the file-visiblerun_agentspermission is already covered by thewarp.execution_profileoverride).Housekeeping:
references/warp.md:10in the research skill lists global MCP as~/.agents/.mcp.json; Warp's own global file is~/.warp/.mcp.json(the implementation is correct; the map row is stale).References
.mcp.json