Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
8177ee4
docs(design): tiered tool permission and approval design
hakula139 Jun 25, 2026
42fcc2c
feat(permission): add rule grammar, mode, and decision gate
hakula139 Jun 25, 2026
f774da3
feat(config): layer permission policy with project-tighten-only trust
hakula139 Jun 25, 2026
df0e88b
feat(permission): extract gate targets from tool inputs
hakula139 Jun 25, 2026
c695c74
feat(permission): gate tool calls with an approval round-trip
hakula139 Jun 25, 2026
2d8b2a5
fix(permission): match operator-bearing deny rules against the whole …
hakula139 Jun 26, 2026
66cba6f
fix(permission): resolve symlinked parents for brand-new write targets
hakula139 Jun 26, 2026
ccdca8d
fix(permission): reject permission rules with an unbalanced parenthesis
hakula139 Jun 26, 2026
d202a70
fix(permission): treat output redirection as compound for allow rules
hakula139 Jun 26, 2026
6ae201a
fix(permission): never treat a path as inside a non-absolute cwd
hakula139 Jun 26, 2026
f298136
fix(tui): give a dropped approval decision an actionable error
hakula139 Jun 26, 2026
4c6a09e
refactor(permission): replace the deny bool with a MatchDiscipline enum
hakula139 Jun 26, 2026
b1cd6ee
docs(permission): align the design doc and comments with shipped Phase 1
hakula139 Jun 26, 2026
29ea8a4
test(permission): cover tool gate methods and the clear-to-deny path
hakula139 Jun 26, 2026
9c816ec
fix(agent): deny when an approval request cannot be delivered
hakula139 Jun 26, 2026
79f3562
fix(tool): gate read-only tools on a path target so denies apply
hakula139 Jun 26, 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
4 changes: 4 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ ox # Start an interactive session
├── model.rs # Ground-truth table: display name, cutoff, capabilities, and unknown raw-id fallback
├── model/
│ └── pricing.rs # Per-million-token cost rates + USD estimator (excludes account / marketplace adjustments)
├── permission.rs # Permission module root: Mode, Policy::decide tiered gate, Target / GateTarget, dangerous-pattern deny defaults
├── permission/
│ └── rule.rs # Rule grammar: `tool(specifier)` parse + match (bash exact / prefix / wildcard, gitignore-style path globs)
├── prompt.rs # System prompt builder (section assembly)
├── prompt/
│ ├── environment.rs # Runtime environment detection (platform, git, date, knowledge cutoff)
Expand Down Expand Up @@ -146,6 +149,7 @@ ox # Start an interactive session
│ │ └── render.rs # pulldown-cmark event walker, inline / block / list / table rendering
│ ├── modal.rs # Modal trait, ModalKey, ModalAction, ModalStack: focus-grabbing UI overlays
│ ├── modal/
│ │ ├── approval.rs # ApprovalModal: approve-or-deny overlay for a gated tool call, on_cancel resolves dismissals to Deny
│ │ ├── kv_overview.rs # Generic KvOverview / KvSection: read-only sectioned kv-table modal used by /status, /config, /help
│ │ ├── list_picker.rs # Generic ListPicker<T: PickerItem>: cursor + render primitive used by concrete pickers
│ │ └── searchable_list.rs # Generic SearchableList<T: SearchableItem>: substring filter + scrollable viewport for searchable pickers
Expand Down
Loading
Loading