feat(execverb): when/deny-when argv guards in CLI vocabulary (replace opaque aws-read gate) #143
Labels
No labels
burndown-2026-06
sunday-sprint
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/cli-guard#143
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
The shipped
ward-aws.guardfile.kdlread like a third vocabulary:can run "*"behind an opaquegate aws-read, with the actual policy (read-op detection, sensitive-resource globs) baked intocli/awsgateGo. It mirrored neither the aws CLI you invoke (aws secretsmanager get-secret-value) nor the IAM policy you'd write to forbid it.Done in this change
Added
when/deny-whenargv guards to the execverb grant body, expressed in CLI vocabulary:secret-id-> value of--secret-id),any-arg(every positional), orargN(Nth positional after the matched subcommand path){ only-reads }scopes a guard to the CLI's get-/list-/describe- read convention (reusesawsgate.IsReadOnly){ allow-env "VAR" }is the one-shot escapeawsgate.GlobMatchThe
gate aws-readregistry path stays for back-compat; the shipped aws guardfile now spells its sensitive-read denial out as a visibledeny-when any-arg matches ... { only-reads; allow-env }.Follow-ups (separate issues)
can run "*"must be the only grant (the funnel becomes aSkipFlagParsingleaf, which can't coexist with child subcommand routing in urfave). So the aws funnel can't yet ALSO carry precise per-opwhen secret-id matchesgrants with specific-beats-catch-all precedence. Worth a design pass.ward ops awsonto execverb is tracked by #131 (the guardfile is still a spec artifact until then).