@mjakl/pi-interlude

Pi extension for stashing the current draft, sending an interlude message, and restoring the draft.

Packages

Package details

extension

Install @mjakl/pi-interlude from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@mjakl/pi-interlude
Package
@mjakl/pi-interlude
Version
3.0.0
Published
Jul 16, 2026
Downloads
227/mo · 190/wk
Author
mjakl
License
MIT
Types
extension
Size
9.2 KB
Dependencies
0 dependencies · 1 peer
Pi manifest JSON
{
  "extensions": [
    "./index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-interlude

Ever had a nice prompt prepared and the agent comes back with a question, or you need to check something before continuing? Deleting the draft is wasted effort, copy/pasting to make space for the interlude prompt is cumbersome. zsh has this fantastic stash command - Esc-q - that allows you to temporarily remove the current command and it will restore it after your interlude command is finished. pi-interlude brings this to pi. Install it, reload, enter something, press F6, enter something else, send it, and watch with awe as your previous prompt reappears 🎉.

A pi extension that lets you stash the current draft, send a one-off interlude message, and then restore the original draft.

Install

Option 1: Install from npm (recommended)

pi install npm:@mjakl/pi-interlude

Option 2: Install via git

pi install git:github.com/mjakl/pi-interlude

Option 3: Install local package

pi install ./

What it does

  1. Press the interlude shortcut
  2. Your current editor text is stashed and the input box is cleared
  3. Type and send a temporary message, or use one of the supported slash commands below
  4. Your previous draft is restored into the editor

Press the shortcut again before sending to restore the stashed draft manually.

Slash command support

Auto-restore currently works for:

  • /compact
  • /model
  • /reload

For other slash commands, the stash stays armed and can be restored by pressing the interlude shortcut again. Starting, resuming, or forking a session discards the stash with the previous session.

Note: the extension currently stashes editor text only. If your draft includes attachments, those are not restored.

Default shortcut

  • f6

F6 is the sole default because it works reliably across terminals and does not conflict with pi's built-in shortcuts.

Opting in to Ctrl-X

Pi 0.80.7 reserves Ctrl-X globally for copying the last assistant message (app.message.copy). Pi skips an extension shortcut that conflicts with this action, so pi-interlude 3.0 no longer binds Ctrl-X by default.

To keep using Ctrl-X for interludes, merge these settings into ~/.pi/agent/keybindings.json:

{
  "app.message.copy": [],
  "app.models.clearAll": [],
  "interlude": ["f6", "ctrl+x"]
}

app.message.copy must be disabled or rebound to free Ctrl-X. The /copy command remains available when its shortcut is disabled.

app.models.clearAll is a separate, picker-specific Ctrl-X binding. It does not block pi-interlude globally, but disabling or rebinding it avoids a remaining shortcut conflict diagnostic. Replace either empty array with another key if you want to keep that built-in shortcut.

After changing the file, run /reload in pi or restart it.

Configuration

The extension reads a custom interlude key from pi's keybindings file. This is ~/.pi/agent/keybindings.json by default, or keybindings.json inside PI_CODING_AGENT_DIR when that environment variable is set.

A single custom shortcut:

{
  "interlude": "alt+q"
}

Multiple custom shortcuts:

{
  "interlude": ["f6", "alt+q"]
}

If interlude is absent, empty, or contains no valid shortcuts, the extension defaults to f6. Custom Ctrl-X bindings also require the pi configuration described above.

After changing the file, run /reload in pi.