Skip to content

+ permission gatekeeper and per-session SQLite store#1

Merged
EdmondDantes merged 1 commit into
mainfrom
feat/permission-gatekeeper-and-session-store
Jun 14, 2026
Merged

+ permission gatekeeper and per-session SQLite store#1
EdmondDantes merged 1 commit into
mainfrom
feat/permission-gatekeeper-and-session-store

Conversation

@EdmondDantes

Copy link
Copy Markdown
Contributor

Permission layer (src/Permission): a deterministic Policy gates every tool call before it runs — hard denylist first, then the Risk default (Safe->allow, Mutating->confirm, Dangerous->deny). Session asks the user via a new Conversation::confirm() that returns Once/Always/No.

Persistence (src/Store/SessionStore): one SQLite file per conversation. History loads on start and the new tail is appended after each turn, so the agent remembers across restarts. 'Always allow' choices persist in a rules table and skip the prompt thereafter (even after restart). bin/claw opens workspace/sessions/console.db.

74 tests, PHPStan level 8, php-cs-fixer — all green.

Permission layer (src/Permission): a deterministic Policy gates every tool call before it runs — hard denylist first, then the Risk default (Safe->allow, Mutating->confirm, Dangerous->deny). Session asks the user via a new Conversation::confirm() that returns Once/Always/No.

Persistence (src/Store/SessionStore): one SQLite file per conversation. History loads on start and the new tail is appended after each turn, so the agent remembers across restarts. 'Always allow' choices persist in a rules table and skip the prompt thereafter (even after restart). bin/claw opens workspace/sessions/console.db.

74 tests, PHPStan level 8, php-cs-fixer — all green.
@EdmondDantes EdmondDantes merged commit 93db84f into main Jun 14, 2026
2 checks passed
@EdmondDantes EdmondDantes deleted the feat/permission-gatekeeper-and-session-store branch June 14, 2026 13:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant