Agent skill

Warp Control CLI

by warpdotdev in warpdotdev/warp

Drives the running local Warp app from the command line to open tabs, split panes, stage input, change themes or inspect its state.

AGPL-3.0Auto-check passedProductivity & Automation

Install Warp Control CLI

skills CLI
$ npx skills add warpdotdev/warp --skill warpctrl -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install warpdotdev/warp warpctrl --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/warpdotdev/warp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/resources/bundled/skills/warpctrl .claude/skills/warpctrl && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
warpctrl
GitHub stars
65k
Used in
1 other repo
Token cost
~3k tokens
SKILL.md length
1,326 words
Files
1
Skills in repo
46
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Drives the running local Warp app from the command line to open tabs, split panes, stage input, change themes or inspect its state.

  • Works in 6 steps: If command -v {{warpctrl_binary_name}}… → If command -v {{warpctrl_binary_name}}… → Inspect… → …
  • Opening a new Warp tab or splitting a pane from the agent
  • SKILL.md covers How to invoke Warp Control, Workflow, Common actions and Targeting, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

The skill tells the agent to use the warpctrl command for actions that change Warp itself rather than the project or operating system: creating a tab, splitting a pane, staging text in Warp's input, opening settings or focusing a window. Warp Control is not a separate binary but a hidden control mode served by the already-running Warp process, and the command name and wrapper path are injected for the current channel, so the agent must not inspect processes or guess the channel.

First use in a task starts with a quick availability check. If the command resolves, it is used as is. Otherwise the agent verifies the bundled wrapper exists, checks that a symlink in /usr/local/bin points at it, and asks you before creating or replacing that symlink, offering an install option and a not-now option. After approval it creates only the expected symlink, retrying through osascript with administrator privileges on macOS if needed, and it never requests or exposes your password.

When your agent uses it

  • Opening a new Warp tab or splitting a pane from the agent
  • Inspecting the state of the running Warp app
  • Opening a file in Warp or staging text in its input buffer
  • Explaining how to invoke Warp Control manually

Example prompts

  • “Open a new Warp tab and split it into two panes.”
  • “Stage the command git status in my Warp input without running it.”
  • “Show me what windows and tabs Warp currently has open.”

Requirements

  • A running Warp app that bundles the warpctrl wrapper

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. If command -v {{warpctrl_binary_name}} succeeds, use {{warpctrl_binary_name}} for the rest of the task. Do not inspect the bundled wrapper…
  2. If command -v {{warpctrl_binary_name}} fails, verify that {{warpctrl_wrapper_path}} exists and is executable. If it is missing, tell the…
  3. Inspect /usr/local/bin/{{warpctrl_binary_name}}. Treat setup as complete only when it is a symlink that resolves to the exact…
  4. If the expected symlink is missing, broken, or points elsewhere, use the ask_user_question tool to ask whether the user wants to install…
  5. After approval, create or update only the expected symlink by running ln -sf "{{warpctrl_wrapper_path}}"…
  6. Verify the result with command -v {{warpctrl_binary_name}}, readlink /usr/local/bin/{{warpctrl_binary_name}}, and {{warpctrl_binary_name}}…

What it can do on your machine

Read from SKILL.md and the folder at commit f571865. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Warp Control CLI loads about 3k tokens when it runs. Until then it costs about 84 tokens; SKILL.md has 1,326 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~84
When it runs · the whole SKILL.md, loaded when a task matches
~3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from warpdotdev/warp at commit f571865, republished under its AGPL-3.0 licence (© warpdotdev). 1,326 words, ~3,014 tokens.

Download SKILL.mdSave it as .claude/skills/warpctrl/SKILL.md (or your agent's skills folder).
name
warpctrl
description
Control and inspect the currently running local Warp application with the warpctrl CLI. Use this skill whenever the user asks the agent to manipulate Warp's own windows, tabs, panes, sessions, input buffer, themes, or UI surfaces; open a file in Warp; inspect local Warp state; or explain how to invoke Warp Control manually.

Warp Control

Use {{warpctrl_binary_name}} to inspect or control the already-running local Warp application that provided this skill. The command name and wrapper path in this skill are injected for the current Warp channel, so do not inspect running processes or guess which channel is active.

Prefer {{warpctrl_binary_name}} when the requested action changes Warp itself rather than the user's project or operating system. Examples include creating a Warp tab, splitting a pane, staging text in Warp's input, opening Warp settings, or focusing a Warp window.

How to invoke Warp Control

Warp Control is bundled into the Warp application. It is not a separate standalone binary; it is a hidden control mode served by the running Warp process.

  • Command for the current Warp channel: {{warpctrl_binary_name}}
  • Bundled wrapper for the current Warp channel: {{warpctrl_wrapper_path}}
  • Optional PATH symlink: /usr/local/bin/{{warpctrl_binary_name}}
Ensure the command is available

Before invoking Warp Control for the first time in a task, prefer the shortest available path and avoid unnecessary setup research:

  1. If command -v {{warpctrl_binary_name}} succeeds, use {{warpctrl_binary_name}} for the rest of the task. Do not inspect the bundled wrapper or verify the symlink unless a later command fails.
  2. If command -v {{warpctrl_binary_name}} fails, verify that {{warpctrl_wrapper_path}} exists and is executable. If it is missing, tell the user that this Warp build does not contain the expected wrapper and stop.
  3. Inspect /usr/local/bin/{{warpctrl_binary_name}}. Treat setup as complete only when it is a symlink that resolves to the exact {{warpctrl_wrapper_path}} bundled wrapper.
  4. If the expected symlink is missing, broken, or points elsewhere, use the ask_user_question tool to ask whether the user wants to install it at /usr/local/bin/{{warpctrl_binary_name}} pointing to {{warpctrl_wrapper_path}}. Offer Install command as the recommended option and Not now as the alternative. Do not create or replace a symlink without an affirmative response.
  5. After approval, create or update only the expected symlink by running ln -sf "{{warpctrl_wrapper_path}}" "/usr/local/bin/{{warpctrl_binary_name}}". Try without elevation first. If macOS permissions prevent the change, run that same command through osascript with administrator privileges; never request or expose the user's password directly.
  6. Verify the result with command -v {{warpctrl_binary_name}}, readlink /usr/local/bin/{{warpctrl_binary_name}}, and {{warpctrl_binary_name}} app version.

If the user chooses Not now, do not create the symlink. Use the bundled wrapper at {{warpctrl_wrapper_path}} directly for the current task.

The Warp UI also exposes Install Warp Control CLI command and Uninstall Warp Control CLI command in the Command Palette and an install control under Settings > Scripting.

Workflow

Always prefer discovering commands from {{warpctrl_binary_name}} itself rather than guessing or inventing them. The CLI provides full help and an action catalog that is the authoritative source of truth for what the installed build supports.

Execute serially and validate results

Run Warp Control commands serially. Never dispatch multiple {{warpctrl_binary_name}} commands through parallel shell-tool calls, even when the commands appear independent. They act on the same running app and may change the active target or the terminal context used to execute and observe later commands. For multi-step requests, prefer one shell-tool call that chains commands sequentially, or issue separate shell-tool calls one at a time.

After an action that creates, activates, navigates, or focuses a window, tab, pane, session, or surface, do not assume the active target is unchanged. Use explicit selectors for later commands when exact targeting matters, or rerun {{warpctrl_binary_name}} app active before continuing.

Validate that each result corresponds to the command that was invoked. If output describes a different action, reports an unexpected instance or channel, or otherwise conflicts with the request, stop and rerun {{warpctrl_binary_name}} instance list serially before retrying. Do not report success until the requested final state has been verified when a corresponding list, inspect, or get command is available.

Route by intent

Before discovering commands, route the request to the narrowest matching top-level group:

  1. Requests to open, show, view, or toggle a named Warp UI destination, panel, picker, or settings page use surface. Convert natural-language names to kebab case, such as "Warp Drive" to warp-drive and "code review" to code-review. Prefer surface <name> open when the requested final state is open. Use surface list or surface help when the destination or supported verb is unknown. Do not infer an internal action name for a UI destination.

  2. Requests about windows, tabs, panes, or sessions use the matching window, tab, pane, or session group.

  3. Requests to stage or inspect editor input use input.

  4. Requests to open a file in Warp use file.

  5. Requests about themes, appearance, settings, or keybindings use the matching theme, appearance, setting, or keybinding group.

  6. Use the generic action catalog only when no dedicated CLI group matches. Internal or catalog action names are not guaranteed to be reachable as standalone parser commands.

  7. Discover running Warp instances from the current Warp channel:

    sh
    {{warpctrl_binary_name}} instance list
  8. If exactly one same-channel instance is running, commands select it automatically. If multiple same-channel instances are running, select one explicitly with --instance <instance_id> or --pid <pid>.

  9. Discover the exact command and parameters from the routed group instead of guessing. This is the preferred source of truth for the available command surface:

    sh
    {{warpctrl_binary_name}} help
    {{warpctrl_binary_name}} <group> help
    {{warpctrl_binary_name}} <group> <command> --help

    Only when no dedicated group matches, inspect the generic action catalog:

    sh
    {{warpctrl_binary_name}} action list
    {{warpctrl_binary_name}} action inspect <action.name>
  10. Inspect the active target chain or list the relevant targets before changing them:

    sh
    {{warpctrl_binary_name}} app active
    {{warpctrl_binary_name}} window list
    {{warpctrl_binary_name}} tab list
    {{warpctrl_binary_name}} pane list
    {{warpctrl_binary_name}} session list
  11. Invoke the narrowest action that satisfies the request, then verify the result with the corresponding list, inspect, or get command when useful.

Show full SKILL.md (437 more words)Show less

Common actions

These are frequently used commands that are safe to invoke directly. For less common commands, route by intent and use {{warpctrl_binary_name}} <group> help or {{warpctrl_binary_name}} <group> <command> --help to discover the exact syntax supported by the running build. Inspect the generic action catalog only when no dedicated group matches.

sh
# Create and manage tabs and panes
{{warpctrl_binary_name}} tab create
{{warpctrl_binary_name}} tab create --type agent
{{warpctrl_binary_name}} tab rename "server logs"
{{warpctrl_binary_name}} pane split --direction right
{{warpctrl_binary_name}} pane navigate --direction next

# Stage text in Warp's input without submitting it
{{warpctrl_binary_name}} input insert "git status"
{{warpctrl_binary_name}} input replace "cargo test"

# Open or toggle Warp UI surfaces
{{warpctrl_binary_name}} surface list
{{warpctrl_binary_name}} surface settings open
{{warpctrl_binary_name}} surface command-palette open --query "theme"
{{warpctrl_binary_name}} surface command-search open
{{warpctrl_binary_name}} surface theme-picker open
{{warpctrl_binary_name}} surface keybindings open
{{warpctrl_binary_name}} surface warp-drive open
{{warpctrl_binary_name}} surface resource-center toggle
{{warpctrl_binary_name}} surface ai-assistant toggle
{{warpctrl_binary_name}} surface project-explorer open
{{warpctrl_binary_name}} surface global-search open
{{warpctrl_binary_name}} surface conversation-list open
{{warpctrl_binary_name}} surface code-review open
{{warpctrl_binary_name}} surface left-panel toggle
{{warpctrl_binary_name}} surface right-panel toggle
{{warpctrl_binary_name}} surface vertical-tabs open
{{warpctrl_binary_name}} surface agent-management open

# Open a file in Warp
{{warpctrl_binary_name}} file open ./src/main.rs --line 42

# Inspect and update supported state
{{warpctrl_binary_name}} theme get
{{warpctrl_binary_name}} theme set "Dracula"
{{warpctrl_binary_name}} appearance get
{{warpctrl_binary_name}} setting list
{{warpctrl_binary_name}} keybinding list

Add --output-format json when structured output is easier to consume:

sh
{{warpctrl_binary_name}} --output-format json tab list

Targeting

Target selectors can be combined when the action supports their scope:

  • Instance: --instance <instance_id> or --pid <pid>
  • Window: --window <id>, --window-index <n>, or --window-title <exact-title>
  • Tab: --tab <id>, --tab-index <n>, or --tab-title <exact-title>
  • Pane: --pane <id> or --pane-index <n>
  • Session: --session <id>

Use IDs returned by list, inspect, or app active when exact targeting matters. If a selector is omitted, most scoped actions operate on the active target. Prefer explicit selectors when more than one target could reasonably match the user's request.

Use surface list before a walkthrough or multi-step UI workflow. It reports both available and unavailable destinations with stable names and reasons. The direct surface ... open commands are idempotent; use them instead of toggle commands when the final open state matters. surface list accepts --instance or --pid for process selection but rejects window, tab, pane, and session selectors.

Safety and limitations

  • Invoke close actions only when the user explicitly asks to close something. Close actions flow through normal Warp close behavior and may trigger existing app warnings.
  • input insert and input replace only stage text. Warp Control intentionally does not provide an action that submits or runs the input.
  • Do not invent unsupported commands. Use the matching group's help first, then use action list or action inspect only when no dedicated group matches.
  • Warp Control affects only a running local Warp application owned by the same user. It does not control remote or cloud Warp instances.
  • Each channel-specific Warp Control CLI lists and targets only Warp instances from its own channel.
  • On Windows, local-control publication is disabled until authenticated broker transport is supported.

Manual setup and troubleshooting

Warp Control availability depends on the build channel and the Settings > Scripting toggle. The local-control mode defaults to enabled on internal dogfood builds (e.g., WarpDev) and disabled on public channels (Stable, Preview, OSS). On any channel, the final gate is the Settings > Scripting toggle. The installed {{warpctrl_binary_name}} wrapper invokes the matching channel-specific Warp executable.

If {{warpctrl_binary_name}} instance list is empty, confirm that a compatible same-channel Warp app is running and Scripting is enabled. If a command reports multiple instances, rerun it with --instance <instance_id>.

If the symlink is not on PATH, follow the confirmation-gated setup flow in How to invoke Warp Control or use {{warpctrl_wrapper_path}} directly.

© warpdotdev, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in resources/bundled/skills/warpctrl of warpdotdev/warp.

Open the folder on GitHubat commit f571865

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in warpdotdev/warp, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Warp Control CLI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Warp Control CLI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Warp Control CLI this skillwarpdotdev/warp65k1 repos~3kAutomated safety check: PassAGPL-3.0
Skyvern Browser AutomationSkyvern-AI/skyvern23k—~2.9kAutomated safety check: PassAGPL-3.0
Feishu Bitable Managementop7418/CodePilot6.5k1 repos~1.7kAutomated safety check: PassCustom licence
CUAWright Web Task Automationmicrosoft/CUAWright6k—~2kAutomated safety check: NotesMIT
MoviePilot Downloader Operationjxxghp/MoviePilot12k—~4.4kAutomated safety check: PassGPL-3.0
Refly Skill Runnerrefly-ai/refly7.5k—~1.7kAutomated safety check: PassCustom licence

Similar skills

  • Skyvern Browser Automation

    Skyvern-AI/skyvern

    Picks the right Skyvern CLI command for a web task, from quick yes/no checks to reusable multi-page workflows, instead of falling back to plain page fetching.

    23k GitHub stars~2.9k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Creates, queries and edits Feishu Bitable tables through tool calls, covering records, fields, views and batch operations with the correct value format for each field type.

    6.5k GitHub starsUsed in 1 repo~1.7k tokens
    Productivity & AutomationAuto-check passed
  • Official

    Solves web tasks by driving a local Playwright browser one bash command at a time, saving a reusable script, screenshots and an action log for each run.

    6k GitHub stars~2k tokensUpdated yesterday
    Productivity & AutomationAuto-check: notes
  • Inspects, diagnoses and directly controls qBittorrent, Transmission or rTorrent downloaders configured in MoviePilot through a bundled Python helper.

    12k GitHub stars~4.4k tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Refly Skill Runner

    refly-ai/refly

    Base skill for the Refly ecosystem: finds, runs and monitors workflow-backed skills through the refly command line, with the actual work done on the Refly backend.

    7.5k GitHub stars~1.7k tokensUpdated 2 mo ago
    Productivity & AutomationAuto-check passed
  • TreeSheets Agent Socket

    aardappel/treesheets

    Runs Lobster scripts against the document open in a running TreeSheets instance through its local agent socket, and returns the results or errors.

    3.2k GitHub stars~5.7k tokensUpdated yesterday
    Productivity & AutomationAuto-check: notes

More from warpdotdev/warp

All 46 skills in this repo
  • Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.

    65k GitHub starsUsed in 2 repos~4.4k tokens
    Auto-check passed
  • Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.

    65k GitHub starsUsed in 4 repos~4.4k tokens
    Auto-check passed
  • Warp Factory Files

    warpdotdev/warp

    Authors and edits file-based Warp software factory definitions rooted at factory.yaml, covering agents, automations, scorers and webhooks, and validates them before a pull request.

    65k GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • Figma Design to Code

    warpdotdev/warp

    Turns a Figma frame or component into production code that matches the design, using the Figma MCP server and the project's own design system.

    65k GitHub starsUsed in 4 repos~2.9k tokens
    Auto-check passed
  • Migrates the compatible subset of settings and global file-based MCP servers from the Warp desktop app into Warp Agent CLI without exposing credentials or state.

    65k GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • Creates project-specific design system rules from your codebase so coding agents implement Figma designs with your components, naming and tokens.

    65k GitHub starsUsed in 3 repos~4.6k tokens
    Auto-check passed

Questions about Warp Control CLI

What does Warp Control CLI do?

Drives the running local Warp app from the command line to open tabs, split panes, stage input, change themes or inspect its state. The skill tells the agent to use the warpctrl command for actions that change Warp itself rather than the project or operating system: creating a tab, splitting a pane, staging text in Warp's input, opening settings or focusing a window. Warp Control is not a separate binary but a hidden control mode served by the already-running Warp process, and the command name and wrapper path are injected for the current channel, so the agent must not inspect processes or guess the channel.

When should I use Warp Control CLI?

Warp Control CLI fits situations like: opening a new Warp tab or splitting a pane from the agent; inspecting the state of the running Warp app; opening a file in Warp or staging text in its input buffer; explaining how to invoke Warp Control manually.

How do I install Warp Control CLI in Claude Code?

Run `npx skills add warpdotdev/warp --skill warpctrl -a claude-code`. Or copy the skill folder (resources/bundled/skills/warpctrl in warpdotdev/warp) into .claude/skills/warpctrl in your project. Claude Code loads it when a task matches its description.

How do I install Warp Control CLI in Codex?

Run `npx skills add warpdotdev/warp --skill warpctrl -a codex`. Or copy the skill folder (resources/bundled/skills/warpctrl in warpdotdev/warp) into .agents/skills/warpctrl in your project. Codex loads it when a task matches its description.

Can I use Warp Control CLI in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add warpdotdev/warp --skill warpctrl -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/warpctrl, .gemini/skills/warpctrl, .github/skills/warpctrl and .opencode/skills/warpctrl in your project.

What does Warp Control CLI need to run?

SKILL.md names no scripts, command-line tools or credentials: Warp Control CLI is instructions for the agent only. Our summary lists: A running Warp app that bundles the warpctrl wrapper.

Does Warp Control CLI access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Warp Control CLI safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Warp Control CLI use?

Warp Control CLI is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Warp Control CLI use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Warp Control CLI?

Skills that share tags, products or a category with Warp Control CLI: Skyvern Browser Automation (Skyvern-AI/skyvern, 23k stars), Feishu Bitable Management (op7418/CodePilot, 6.5k stars), CUAWright Web Task Automation (microsoft/CUAWright, 6k stars) and MoviePilot Downloader Operation (jxxghp/MoviePilot, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Warp Control CLI?

warpdotdev (a GitHub organization) maintains it in warpdotdev/warp, which has 65,380 GitHub stars. The repository holds 46 skills in this directory. The repository was last updated on October 7, 2026.

Source: warpdotdev/warp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.