$ cat ~/map/pi-jev-auto-mode.md
pi-jev-auto-mode
Jev-backed auto mode: a deterministic policy layer first, semantic judgement second, undecided calls block.
extensions✓ Sep 18
Facts
- repository
- github.com/jomatsu/pi-jev-auto-mode ↗
- GitHub Stars
- ★ 32
- Forks
- 2
- license
- MIT
- npm / mo
- —
- last push
- Sep 24, 2026
install
Run pi install npm:pi-jev-auto-mode (or pi install git:github.com/jomatsu/pi-jev-auto-mode, or try it without installing via pi -e npm:pi-jev-auto-mode); the semantic layer needs a TypeSafe API key stored through /jev-auto-mode login, though the gate keeps working without one## TL;DR
An auto mode for pi backed by TypeSafe Jev: a deterministic policy layer answers what it can, escalated tool calls get a semantic judgement, and every call that cannot be decided blocks instead of asking you.
## Key points
- $Two layers in order: hard-denied commands and your deny patterns block at the first layer without ever reaching Jev, allow patterns and declared safeCommands run recorded or clean, and read-only builtins and in-project writes to unprotected paths run without a record — while dangerous-command shapes and protected paths (.env, .git/, ~/.ssh, .pi/, .github/workflows/, AGENTS.md) are escalated to Jev even when they look read-only or stay inside the working directory; everything else is judged too.
- $The undecided middle band blocks by default: Jev conditions carry a mode of required or hazard and a severity of hazard or soft, intent_coverage is the permission question, and /jev-auto-mode uncertain deny|ask|allow restores a confirmation dialog or trusts the band if you want one.
- $gateScope decides the semantic layer's reach: the default all has the deterministic layer vouch for what it can — read-only inspection, declared safe commands, in-project unprotected writes — and judges everything else, while matched restores pattern-only behaviour, the mode that once let an upload command shaped like nothing on file run with no judgment at all.
- $Measured costs: a judged call takes roughly half a second (193-642 ms across eleven ordinary commands), fast-path calls cost nothing, and the shipped thresholds are calibrated on twelve fixtures with the numbers published in docs/calibration.md and framed as a starting point, not a truth.
- $Key handling: /jev-auto-mode login verifies the TypeSafe key against the API before storing it as an owner-only file under $PI_CODING_AGENT_DIR/secrets/, TYPESAFE_API_KEY takes precedence when set, TYPESAFE_DEFAULT_MODEL selects the model (default jev-latest), and Jev's early access may be waitlisted.
- $Fails closed without a key: the deterministic rules keep running — read-only and declared safe commands pass, hard-denied shapes block — while a call nothing vouches for is blocked with a not-connected notice instead of being judged; the footer shows jev with its scope while the semantic layer is active and jev no key when it is not.
- $Project settings are trust-gated: the global file lives at $PI_CODING_AGENT_DIR/jev-auto-mode.json, and a project override at .pi/jev-auto-mode.json is honored only for a trusted project, so an untrusted checkout cannot loosen the gate that is judging it.
## FAQ
Q Does auto mode approve everything?
No — the design points the other way. Hard-denied and dangerous shapes block deterministically, a dangerous-shape command passes only when intent coverage is clearly satisfied, and any call nobody vouches for — including everything Jev cannot decide — blocks by default.
Q What happens without a TypeSafe API key?
The gate stays up: its deterministic rules keep running, read-only and declared safe commands pass, hard-denied shapes block, and a call nothing vouches for is blocked with a not-connected-to-Jev notice rather than silently allowed.
Q How do I retune a threshold?
Every judgment records a per-condition table in the transcript; /jev-auto-mode threshold shows the current value beside the last observed probability, threshold followed by a rule and a value writes an override that takes effect immediately, and a threshold must keep a middle band on both sides (0.5 < t <= 1).
## References
## Related entries
$ pi-heed
Turns what you said into runtime constraints and checks every side-effecting tool call against them before it runs.
$ pi-jev
Typed probabilistic judgements: a gate screens pi tool calls before they run and an output judge classifies results.
$ pi-jev-sentinel
Guards pi tool calls, tool outputs, and replies with Jev-scored risk, injection checks, and secret scrubbing — never auto-allows.
## Guides
Last updated: Sep 18, 2026