@aprimediet/permission-modes
A Claude-Code-style **Shift+Tab mode cycle** for the [pi coding agent](https://pi.dev).
Install
pi install npm:@aprimediet/permission-modes
Installs from npm into ~/.pi/agent/.
Add -l for project-local (.pi/). Manage with pi list / pi update / pi remove.
What this package can reach
Detected automatically from the source at
version 1.2.2.
This describes access, not safety — you decide whether it's appropriate for what
the package claims to do.
- Behavior — Changes how the agent thinks Modifies the system prompt, injects messages, or rewrites conversation context.
- Intercepts tools — Can block or rewrite tool calls Subscribes to tool_call/tool_result/input. Can change a command after you approved the one displayed.
- LLM traffic — Sees raw model API traffic Reads or replaces provider requests, headers or responses — including your prompts.
- Tool control — Can switch pi's tools on and off Calls setActiveTools, so it can disable built-ins — including safety-relevant ones.
- Tool override — Replaces pi's built-in tools Intercepts built-ins like bash, edit, read or write — sees and can rewrite every use.
- UI — Draws its own interface Renders widgets, footers, dialogs or full-screen views.
What it actually did when run
observedLoaded in a sandbox with no network, a read-only filesystem and a recording stand-in for pi's API. This is what it called — not what the source suggests it might.
Replaces pi's built-in tool: todo.
Every use of that tool goes through this
package instead of pi.
Tools registered todo
Events subscribed agent_endbefore_agent_startbefore_provider_requestcontextmessage_updatesession_startsession_treetool_callturn_endturn_start
APIs called appendEntrygetActiveToolsgetActiveTools.filtergetFlagregisterCommandregisterFlagregisterShortcutregisterToolsessionManager.getBranchsessionManager.getEntriessessionManager.getEntries.filtersessionManager.getEntries.filter.popsessionManager.getEntries.indexOfsetActiveToolsui.notifyui.setFooterui.setStatusui.setWidgetui.setWorkingIndicatorui.theme.fg
5 calls the source scan did not predict
getActiveTools.filter · sessionManager.getEntries.filter · sessionManager.getEntries.filter.pop · sessionManager.getEntries.indexOf · ui.theme.fg
Reached through a value the scan could not follow — passed as an argument, stored on another object, or returned by a helper.
Run against version 1.2.2 on 2026-08-02.
Registration-time behaviour under default settings; other configurations may differ.
Reviews
0 publishedSign in with GitHub to write a review, reply, or vote.
No reviews yet — be the first.
More in Guards & policy
- @spences10/pi-nopeek — Secret-safe workflow reminder that steers Pi agents to use nopeek instead of exposing .env…
- pi-mono-sentinel — Pi extension that guards against content-based secret leaks and indirect script execution
- pi-mono-context-guard — Pi extension that guards context window growth by auto-limiting read and rg output
- @diegopetrucci/pi-permission-gate — A pi extension that prompts before dangerous bash commands and protected file writes.