name: change-keybinding description: Customize Warp keyboard shortcuts (keybindings, keymappings) by editing the user's keybindings.yaml file. Use when the user asks to remap a key combination, rebind an action, change a shortcut, or remove a default keybinding (e.g. "change ctrl+space to ctrl+s", "rebind the command palette to cmd+p", "remove the default for X").
change-keybinding
Use this skill when the user wants to remap, rebind, or remove a Warp keyboard shortcut.
Keybindings file
User customizations live at:
{{keybindings_file_path}}
This is the exact path Warp reads at launch — it is platform- and channel-specific (e.g. under ~/.warp*/ on macOS, under XDG config dirs like ~/.config/warp-terminal/ on Linux, and under %LocalAppData% on Windows). Use this path verbatim — do not infer a different one from the user's home directory layout. Create the file (and any missing parent directories) if it does not exist.
File format
A flat YAML map of action_name → key_trigger. Action names contain a colon, so they must be quoted:
"workspace:toggle_ai_assistant": ctrl-s
"editor_view:delete_all_left": cmd-shift-A
"workspace:toggle_command_palette": none
Keystroke encoding rules
Triggers use Warp's normalized form — get this exactly right or the binding silently fails to load.
- Modifiers (in this order when combined):
ctrl-alt-shift-cmd-meta-. Cross-platform alias:cmdorctrl-(becomescmdon macOS,ctrlelsewhere). - Letter casing: applies only to single-letter keys. Without
shift, the letter is lowercase (ctrl-s). Withshift, the letter is uppercase (shift-A, nevershift-a). Mixing them is invalid. - Special keys:
space,enter,escape,tab,backspace,delete,insert,up,down,left,right,home,end,pageup,pagedown,f1–f20,numpadenter. Always lowercase, even withshift(ctrl-shift-space,shift-tab— neverctrl-shift-SPACE). Use the literal wordspace— not" ". - Punctuation is the bare character:
cmd-=,cmd-,,cmdorctrl-/. - Remove a default binding: set the value to the literal string
none. The action becomes unbound.
Translate user phrasing into this form: Ctrl+S → ctrl-s, Cmd+Shift+P → cmd-shift-P, Ctrl+Space → ctrl-space.
Identifying the action
Defaults are compiled into Warp and are not discoverable from the keybindings file on disk. There is no catalog the agent can consult to map a description or current shortcut to an action name. Pick the right strategy based on how the user described the change:
By action name ("set workspace:toggle_command_palette to cmd-p"): the user already gave you the name — write it directly.
By description or current key combo ("rebind the command palette to cmd-p", "change ctrl+space to ctrl+s"): you don't have the action name and cannot reliably guess it. Do not invent one. Direct the user to the keybindings editor (
workspace:show_keybinding_settings, defaultcmd-ctrl-kon macOS; Settings → Keyboard Shortcuts on other platforms) — they can search by description or current shortcut there and either edit the binding in place or share the canonicalnamespace:action_nameso you can write it.
Workflow
- Determine which action to remap and the new trigger (see "Identifying the action").
- Read the existing keybindings file at
{{keybindings_file_path}}if present. Preserve every existing entry — only add or update the one you're changing. - Write the file (creating parent directories if necessary). Make sure the action key is quoted and the value is normalized (see encoding rules).
- Tell the user that Warp must be restarted for the change to take effect — the keybindings file is loaded only at app launch, unlike
settings.tomlwhich hot-reloads. They can quit withcmd-Q(macOS) or the equivalent on their platform and reopen Warp.
Examples
Remap an existing custom binding by old trigger:
# before
"workspace:toggle_ai_assistant": ctrl-space
# after
"workspace:toggle_ai_assistant": ctrl-s
Remove a default shortcut:
"workspace:toggle_keybindings_page": none
Shift combined with a special key (note the special key stays lowercase):
"workspace:toggle_ai_assistant": ctrl-shift-space
Cross-platform binding using the cmdorctrl- alias (resolves to cmd on macOS, ctrl elsewhere):
"workspace:toggle_command_palette": cmdorctrl-shift-P