pi-break

Skip a hung Pi tool call without pressing Escape. Keeps the turn and the queue.

Packages

Package details

extension

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

License

MIT