@hank-warren/pi-stash

Park an unsent prompt with Alt+S, work with an empty editor, then restore it with Alt+S — in memory, never submitted.

Packages

Package details

extension

Install @hank-warren/pi-stash from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@hank-warren/pi-stash
Package
@hank-warren/pi-stash
Version
0.3.0
Published
Aug 28, 2026
Downloads
236/mo · 236/wk
Author
hank-warren
License
MIT
Types
extension
Size
16.7 KB
Dependencies
0 dependencies · 2 peers
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

@hank-warren/pi-stash

Park an unsent prompt with Alt+S, do something else in the empty editor, then press Alt+S again to get it back.

The case it exists for: you have typed — or pasted — a long prompt, and then realise you want a different model first. Running /model means losing the draft or juggling it in another window. With pi-stash, Alt+S puts the draft aside, /model runs against an empty editor, and Alt+S brings the draft back exactly as it was, still unsent.

Install

pi install npm:@hank-warren/pi-stash

Try it without installing:

pi -e npm:@hank-warren/pi-stash

Usage

One key, two modes, chosen by what the editor holds:

Editor Alt+S
Has text Stashes it and clears the editor
Empty or whitespace only Opens a selector of stashes, newest first
  • Multiple stashes. Press Alt+S on several drafts and they all accumulate; there is no cap and nothing is silently evicted. The selector lists them newest first, each with a #<id> prefix, a one-line preview, and line and character counts — so two identical drafts stay tellable apart.
  • Cancel is safe. Esc in the selector leaves every stash untouched.
  • Restoring consumes one stash. The selected draft returns to the editor and leaves the list; the others stay.
  • Restoring never submits. No Enter is synthesized and no message is sent — the prompt comes back editable, exactly as you left it.
  • Pastes stay compact. A large paste is stashed with its full body, not the [paste #N …] placeholder, and comes back through Pi's own paste handling — so the editor shows a compact marker again rather than a thousand lines.

Lifetime

Stashes live in memory for the loaded extension runtime and are written nowhere: not to session JSONL, not to settings, not to a log or any other file. An unsent prompt never reaches disk.

They survive a model change, which is the whole point. They are discarded by /reload, by session replacement (/new, /resume, /fork), and by process exit.

Changing the key

Alt+S is the default because it collides with no built-in Pi keybinding, and because it reaches Pi as ESC+s — unlike Ctrl+Shift+<letter>, which terminals without the kitty keyboard protocol cannot distinguish from Ctrl+<letter> at all.

A collision is a property of your host rather than of this package, though: your own keybindings.json and every other extension you load compete for the same small space. Set the key in <agent dir>/pi-stash.json (usually ~/.pi/agent/pi-stash.json):

{ "shortcut": "ctrl+shift+p" }

Use "off" to register no shortcut at all, leaving the key to whoever else wants it. An unreadable or invalid file falls back to Alt+S and says so the first time you press it, rather than failing to load.

If Pi prints Extension shortcut conflict naming pi-stash at startup, that is this setting's cue: something else on your host already claims the key.

Scope

Text prompts only. Image attachments, cursor position, cross-session sharing, disk persistence, and naming or deleting stashes outside the selector are out of scope.

License

MIT