Skip to content

Follow up Warp upstream updates: standalone Agent CLI config root (~/.warp_cli/) unsupported — add a warpcli target #2598

Description

@dyoshikawa

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    consideringenhancementNew feature or requestmaintainer-scrapRough notes for AI implementation. Not for human eyes.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions