alexj11324

Open Jev Approvals — Development skill for Claude Code

Development community

Fail-closed binary (allow/deny) approval gate for Codex and Claude Code hooks — every intercepted tool call is reviewed by TypeSafe JEV and composed through a versioned local policy, with scoped autho.

How to install Open Jev Approvals

This entry records only its repository, not the path inside it, so there is no exact command to give. Open alexj11324/open-jev-approvals and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Open Jev Approvals does

Fail-closed binary (allow/deny) approval gate for Codex and Claude Code hooks — every intercepted tool call is reviewed by TypeSafe JEV and composed through a versioned local policy, with scoped authorization and a tamper-audited SQLite trail.

Alternatives in Development

  • Phistory — Phistory automatically archives versioned system prompt snapshots from agent CLIs like Claude Code, Codex, Ope 560 ★
  • Migrations — Versioned breaking change migrations for Turbo 263 ★
  • Raw CLI — The agent harness you can fork 105 ★

README

open-jev-approvals

English | [简体中文](README.zh-CN.md)

An MIT-licensed JEV approval gate for Codex and Claude Code hooks.

It receives hook events plus tool and permission payloads, sends each intercepted action to TypeSafe Jev, and composes the typed judgments through a local policy. On Codex, it preserves the upstream split between `PreToolUse` blocking and `PermissionRequest` decisions. JEV is the only reviewer: every intercepted action ends in an explicit local `allow` or `deny` — there is no third outcome.

The first release targets macOS and Linux. It leaves each harness's model, provider, sandbox, and bypass mode untouched.

Build

go build -o bin/jev-approve ./cmd/jev-approve
go test ./...

Configuration

`TYPESAFE_API_KEY` is required for live reviews. The binary loads credentials only from a **user-level** env file — a checked-out or working `.env` inside a project is never read, so a repository cannot redirect the approval endpoint or capture the key. The file uses `KEY=value` lines (see `.env.example`) and resolves in this order:

  1. $JEV_APPROVALS_ENV_FILE when set,
  2. $XDG_CONFIG_HOME/jev-approvals/env when XDG_CONFIG_HOME is set,
  3. ~/.config/jev-approvals/env otherwise.

Environment variables:

Variable Required Meaning
TYPESAFE_API_KEY yes TypeSafe API credential, sent as a bearer token
TYPESAFE_API_BASE_URL no endpoint override; must be https, no credentials/query/fragment (default https://api.typesafe.ai/v1/systemone)
TYPESAFE_MODEL no model override (default jev-latest); responses are still validated to a jev-* model
JEV_APPROVALS_STATE_DIR no directory holding state.db
JEV_APPROVALS_ENV_FILE no env-file path override
XDG_STATE_HOME, XDG_CONFIG_HOME no XDG base-directory overrides for state and config

The audit database is SQLite at `$JEV_APPROVALS_STATE_DIR/state.db`, else `$XDG_STATE_HOME/jev-approvals/state.db`, else