Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
58d037e
docs(specs): add permission model design
karngyan Jul 11, 2026
b7571a0
docs(plans): permission model implementation plan
karngyan Jul 11, 2026
60d7d39
feat(protocol): add policy tiers, matcher, method map
karngyan Jul 11, 2026
25373c3
feat(extension): policy store with tighten-only writes
karngyan Jul 11, 2026
a37ec5f
feat(extension): enforce policy in dispatch gate
karngyan Jul 11, 2026
999e6fe
feat(extension): site permissions popup section
karngyan Jul 11, 2026
b5c38ae
feat(cli): add reins policy (view + tighten only)
karngyan Jul 11, 2026
5ee4c4a
test(cli): cover policy methods and denial end-to-end
karngyan Jul 11, 2026
6d38a86
docs: site permissions gotcha, README, changeset
karngyan Jul 11, 2026
28a4e79
fix: close review gaps — FQDN bypass, monitor buffer leak
karngyan Jul 11, 2026
b5423ec
fix(extension): gate protocol-relative navigate destinations
karngyan Jul 11, 2026
fe146d0
feat(extension): segmented tier controls replace native selects
karngyan Jul 11, 2026
e1990c7
feat(extension): custom dropdown for tier pickers
karngyan Jul 11, 2026
3833a36
style(extension): unify site-permissions section design
karngyan Jul 11, 2026
ab5fe70
fix(extension): stale validity error blocked add-rule submits
karngyan Jul 11, 2026
8578f75
fix(extension): serialize policy writes, fail closed in popup
karngyan Jul 11, 2026
43c1cf8
fix(extension): make hidden attribute effective in popup
karngyan Jul 11, 2026
6c6c422
chore(extension): justify important on hidden guard
karngyan Jul 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .changeset/permission-model.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@karnstack/reins": minor
"@reins/extension": minor
---

Per-site permission tiers (deny/read/full) enforced in the extension.
`reins policy` shows and tightens policy; grants are popup-only. New
bridge methods `policy_get`/`policy_tighten`; denied tabs are redacted in
`list_tabs`. Default remains full access everywhere.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,13 @@ Chrome Web Store: **[docs/CHROME_WEB_STORE.md](docs/CHROME_WEB_STORE.md)**.

## Security

- Per-site permissions, enforced in the extension: every host resolves to a
tier — `deny`, `read` (observation only: tabs/text/snapshot/screenshot/
console/network), or `full`. Fresh installs default to `full` everywhere
(zero-config); tighten with `reins policy deny <host>` /
`reins policy readonly <host>` or from the popup. Loosening is popup-only
by design — a shell agent cannot grant itself access, because the check
runs in the extension, not the daemon.
- Everything binds `127.0.0.1` — nothing is reachable from the network.
- `/rpc` and the other endpoints validate the `Host` header (DNS-rebinding
protection), so web pages can't reach the daemon even via rebound DNS.
Expand Down
Loading
Loading