pi-break
Skip a hung Pi tool call without pressing Escape. Keeps the turn and the queue.
Package details
Install pi-break from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-break- Package
pi-break- Version
1.0.2- Published
- Aug 19, 2026
- Downloads
- 504/mo · 14/wk
- Author
- apoapostolov
- License
- MIT
- Types
- extension
- Size
- 17.3 KB
- Dependencies
- 0 dependencies · 1 peer
Pi manifest JSON
{
"extensions": [
"src/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-break
Skip a hung tool call in Pi without pressing Escape.
Escape aborts the whole turn and dumps your follow-up queue back into the editor. /break kills the stalled call, leaves the turn running, and leaves the queue alone.
Install
Requires Pi 0.84 or newer.
pi install npm:pi-break
Pin a release:
pi install npm:pi-break@1.0.2
Git still works: pi install git:github.com/apoapostolov/pi-break@v1.0.2.
Start a new Pi process after install. /reload is enough if you already have the package loaded.
If you dropped a raw pi-break.ts into ~/.pi/agent/extensions/, remove that copy first. Two copies register /break twice.
Usage
| Input | What happens |
|---|---|
/break |
Kill the oldest in-flight tool. Keep the turn. Do not retry that call. |
/break try page=1 instead |
Same, then that text is the next user message, ahead of any queued steer. |
/again |
Kill it, then tell the model to reissue that exact call once. |
/again add a 30s timeout |
Same, with that tweak. |
Ctrl+Shift+B |
Same as /break. Not Ctrl+\ (that is SIGQUIT in most terminals). |
| Escape | Unchanged. Hard abort. |
While a tool is running you get one line above the input (oldest call, the one /break hits). Spinner on the left, commands dim:
⠋ bash 1m47s · 1 pid · /break skip · /again reissue · Esc abort
Idle /break hello just sends hello as a normal message.
What it can kill
/break SIGKILLs the tool's child process tree. That covers bash and anything else that spawn()s off the Pi process (foundry_use, pi.exec, long gh calls).
It cannot stop an in-process hang. web_search, subagent_wait, a silent model stream: those get marked, and if they never return, Escape is still the way out.
/break tells the model not to retry that call. /again pastes the original tool name and args and tells it to fire that call once. Neither re-spawns the process itself. Partial output is kept when there is any.
Why not avtc-pi-unstuck?
avtc-pi-unstuck is a timer. It applies a default bash timeout and nudges empty replies with continue. This package is a user skip: you decide the call is dead, you break it, the turn continues.
They can live together. They do different jobs.
Uninstall
pi remove git:github.com/apoapostolov/pi-break
Development
git clone https://github.com/apoapostolov/pi-break
cd pi-break
pi -e ./src/index.ts