v0.1.2
SQLite decision store, AWS policy pack, shield hardening, web UI with
server-side filters, and E2E test infrastructure.
Added
- SQLite decision store - WAL-mode event store at
~/.agentjail/agentjail.db
with redaction, retention cleanup, concurrent reader/writer support, and indexes
on session_id, ts, action, tool_name, rule_id - ReadOnlyStore - separate read-only connection type (
sqliteROStore) for UI,
logs, and replay; no write methods leak even via type assertion - AWS policy pack -
no_aws_destructive.regolibrary rule (deny destructive,
ask mutating); per-account posture config (sandbox/prod/locked/custom);
policy-aws.yamlsample template - Replay CLI -
agentjail replay --session <id> --list --verbose --follow
with formatted output and column headers - Shield hardening - env-stripping at launch (configurable blocklist),
environment audit (root/ambient creds/IMDS detection), Landlock network rules
withruntime.LockOSThread()preservation,agentjail-netproxyfor per-host
egress on Linux - Secrets broker -
agentjail-secretsbinary (AES-256-GCM at rest, Unix
socket RPC, AWS/PG/Redis backends); shield calls grant/revoke for scoped env
var injection - Web UI -
agentjail uilocal replay viewer with SQLite backend, server-side
filters (action/tool/rule/limit query params), resizable panes and columns,
agent logos (Claude/Cursor/Codex/OpenCode), collapsible audit section, branded
header with GitHub star/issue links - Server-side filters -
/api/stateand/api/sessionaccept?action=,
?tool=,?rule=,?limit=query params; counters remain global while events
are filtered;FilteredCountandTotalDecisionsin response - E2E test -
make e2eruns a 20-assertion new-user test script covering
build, daemon, hook decisions, SQLite store, replay, UI API, filters, try, and
SIGHUP reload; CI job on ubuntu-latest + macos-14
Fixed
- AfterID keyset cursor for DESC pagination (
id < ?notid > ?) - Session filter uses substring match (INSTR) consistently across SQLite and
daemon.log modes - UI connection pooling - one shared SQLite handle instead of per-request open
- sqliteSnapshot over-fetch - SQL aggregate for counters, LIMIT for display
- DSN path URL-encoding for paths with
?,#,% - SSE "connecting..." stuck - flush
:okcomment on connect - Limit clamping (default 100, max 10000) on all queries
- SQLite fallthrough to daemon.log now logs a warning
Security
- ADRs 0020-0024: environment audit, Landlock network, netproxy, secret server,
env-stripping at launch