@mjakl/pi-interlude
Pi extension for stashing the current draft, sending an interlude message, and restoring the draft.
Package details
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
- Press the interlude shortcut
- Your current editor text is stashed and the input box is cleared
- Type and send a temporary message, or use one of the supported slash commands below
- 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.