pi-input-history
Cross-session prompt history and fuzzy reverse search for pi.
Package details
Install pi-input-history from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-input-history- Package
pi-input-history- Version
1.1.0- Published
- Aug 27, 2026
- Downloads
- 374/mo · 242/wk
- Author
- ouzhenkun
- License
- MIT
- Types
- extension
- Size
- 90.8 KB
- Dependencies
- 0 dependencies · 3 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
pi-input-history
Cross-session prompt history and fuzzy reverse search for pi.
Why
Pi's built-in ↑/↓ history only covers the current session and is lost on reload. This extension persists your last 100 prompts across sessions and adds fuzzy reverse search (default Ctrl+R) to find any past prompt instantly.

Install
pi install npm:pi-input-history
Or from git:
pi install git:github.com/ouzhenkun/pi-input-history
Usage
Persistent History
On session start, your last 100 prompts across all sessions are loaded into the editor. Use ↑/↓ arrows to browse them as usual.
Reverse Search
- Press the search shortcut (default Ctrl+R) to open the search overlay.
- Type to fuzzy-filter history (subsequence matching, space-separated multi-token).
- Matched characters are highlighted with your theme's accent color, using minimal-span matching so the highlight stays on the closest contiguous group (e.g.
inhighlightsinininput, notpi'si+input'sn). - The preview viewport shows the matched record; long lines are soft-wrapped (never truncated) and the viewport grows with content up to your terminal's height, then scrolls.
- The first matched line is marked with
▸; the viewport is separated from the input line by a dim divider. - Navigate and accept:
| Key | Action |
|---|---|
search shortcut / ↑ |
Cycle to older match |
newer shortcut / ↓ |
Cycle to newer match |
ctrl+k / ctrl+j |
Scroll the preview viewport (when it exceeds the terminal height) |
Enter |
Accept match into editor |
Esc / Ctrl+G |
Cancel |
Defaults: search = ctrl+r, newer = ctrl+s, scroll up = ctrl+k, scroll down = ctrl+j.
Configuration
Optional config at ~/.pi/agent/pi-input-history.json:
{
"searchShortcut": "ctrl+r",
"newerShortcut": "ctrl+s",
"scrollUpShortcut": "ctrl+k",
"scrollDownShortcut": "ctrl+j"
}
| Field | Default | Description |
|---|---|---|
searchShortcut |
ctrl+r |
Open reverse search; press again in the overlay to cycle older |
newerShortcut |
ctrl+s |
In the overlay, cycle to a newer match |
scrollUpShortcut |
ctrl+k |
In the overlay, scroll the preview viewport up |
scrollDownShortcut |
ctrl+j |
In the overlay, scroll the preview viewport down |
Omit the file or any field to keep the default. After editing, run /reload in pi.
Shortcut conflict with app.session.rename
Pi binds app.session.rename to ctrl+r by default (session picker). This extension can still use ctrl+r; pi logs a non-fatal conflict warning and prefers the extension shortcut at the editor level.
To silence the warning while keeping reverse search on Ctrl+R, rebind rename in ~/.pi/agent/keybindings.json:
{
"app.session.rename": "ctrl+shift+r"
}
Or change searchShortcut in pi-input-history.json to another chord.
Features
- Cross-session persistence — history survives across sessions automatically.
- Fuzzy subsequence matching — type partial characters in order, multi-token support with spaces.
- Minimal-span highlighting — matched characters form the closest contiguous group, so
inhighlightsinput, not scattered chars. - Soft-wrapped preview — long lines wrap to multiple lines instead of being truncated with
.... - Adaptive viewport height — the preview grows with content up to the terminal height, then scrolls.
- Scrollable viewport —
ctrl+k/ctrl+jto browse the whole record. - Match markers — the first matched line is marked with
▸, separated by a dim divider. - Deduplication — no duplicate entries across sessions.
- Current session awareness — merges live branch history with cached cross-session history.
- Configurable shortcuts — override via
pi-input-history.json.
Acknowledgments
The reverse search component is inspired by pi-readline-search by @mrshu.
License
MIT