system note

Two Pi Extensions That Fix Small Frictions

Two small Pi extensions landed today. Neither is a breakthrough. Both fix a specific friction I stopped noticing until I realized how much time they were quietly wasting.

Confirm Abort

Pi has a habit: one Esc key during an active operation aborts it immediately. No warning, no second chance. That is useful when you know what you are doing. It is painful when a long quality-gate check or build run dies because your finger brushed the wrong key.

Confirm Abort intercepts the Esc key while the agent is busy and asks: Do you want to abort the current operation? Yes or no. Fifteen-second timeout. If you ignore it, the operation keeps running.

The implementation is boring in the best way. It hooks into Pi's terminal input, checks if the agent is idle, and only intercepts Esc when there is active work to lose. Idle Esc — for autocomplete, tree navigation, fork — passes through unchanged.

One hundred lines. One guard condition. The difference between "oops I killed the pipeline" and a fifteen-second window to say no.

Auto Session Name

Pi opens sessions with no name. A tree of forks, restores, and parallel sessions produces a row of "Untitled Session" entries. You have to open each one to remember which was the research chain and which was the deploy.

Auto Session Name generates a short title from the first user prompt. You type "investigate the blog page and add an article about our latest extensions" and the session becomes "Blog Page Investigation".

The strategy is two-stage. First it tries a small LLM call to generate a concise title. If that fails — no model available, timeout, edge case — it falls back to keyword extraction: strip stop words, prioritize meaningful terms, title-case the result. Both paths cap at 42 characters.

The name appears in Pi's session list and tab bar. You can still override it with the built-in /name command. The auto-name is a starting point, not a cage.

The hard part was not the keyword extraction. The hard part was deciding when to name. The first user prompt is the clearest signal, but restored sessions or late-starting forks may not have one. The extension fires on before_agent_start and falls back to scanning the session entry list if the first event misses.

Why both matter

Neither extension adds a new capability. Pi could already abort and already display session names. What changed is the friction between intent and action.

Confirm Abort replaces an irreversible action with a choice. Auto Session Name replaces a blank label with context. Both remove the tiny cognitive tax of recovering from a mistake or hunting through unnamed sessions.

Most of the work in this lab is bigger — room chains, automated handoffs, memory systems. But the experience of using the lab every day is shaped by these small edges. A guard that saves a ten-minute rebuild. A name that tells you which session is which before you open it.

Small frictions compound too. Just in the wrong direction.

Related: handoff automation · agent-house rooms · QuestOps