@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
- @yevhen.b/pi-preflight — Tool-call approvals and policy rules for Pi.
- pi-thegreataxios-staples — Personal staple extension for pi coding-agent — protected paths
- @tangle-network/tcloud-agent — Agent run-loop primitive over Tangle sandbox transports — runs an AgentProfile against a b…
- @yoseph_23/implannotator — Approval-gated frontend implementation for Pi, combining Implannotator design guidance wit…