principles: add "Avoiding prompt fatigue" as §1, ahead of the security principle (PMC vote required) - #1291
Conversation
|
Converted to draft while the Vote is runnning https://lists.apache.org/thread/bl8lhj9c0jls8h5s3172vw6gg1pvwkwb |
0c1eb03 to
216f76f
Compare
063607b to
ff20148
Compare
|
+1 (non-binding). I completely agree with this addition and the decision to place it as Principle 1. The UX phenomenon of 'alert fatigue' is well-documented in security engineering, and applying it as a first-class constraint for Agentic UI design is a great move. A security control that users learn to blindly click through isn't a control at all. I love the tweaks Justin suggested. I just had one more minor thought on the phrasing here:
This is great, but perhaps we should explicitly add that the single confirmation for a bulk operation must present a clear summary of the batch scope? Something like: "a bulk operation is a bounded shape [...] rather than N confirmations, provided the single prompt clearly surfaces the full scope of the batch." It ensures that when we collapse N prompts into 1, the human doesn't lose the visibility they would have had otherwise. Regardless of the phrasing tweak, this is a massive +1 from my side! |
Yeah, we could but I think no need this is how I understand what "bounded shape" means. And It always work like that (been doing that multiple times). |
|
Makes total sense! Thanks for the clarification on the definition of "bounded shape". Looking forward to seeing this merged once the vote concludes. |
…y principle A confirmation prompt is a control only while the human still reads it. The catch-all `Bash(gh *)` ask rule that #1290 removes prompted on every read, and the hundredth prompt was being approved as reflexively as the first — the exact failure RFC-AI-0002 § Layer 3a describes. This makes avoiding that failure a principle in its own right, placed before "Privacy, security, and supply-chain integrity ship before features" because it is what keeps that principle's confirmations meaningful. Adding a principle and changing the ordering both require a PMC vote per "Amending these principles"; this PR is the proposal, and it merges only after the vote result is recorded on dev@. The insertion renumbers §1–§18 to §2–§19. Every anchor of the form `PRINCIPLES.md#N-…`, every bare `PRINCIPLES.md#N`, every `§N` on a line that links the file, and the three unlinked "Principle N" mentions in the optimize-skill docs are updated to match (21 files). RFC-AI-0002 § Layer 3a now links the new principle. Generated-by: Claude Opus 5
Two wording tweaks to the proposed principle 1, from Justin Mclean's +1 (binding) on the dev@ vote thread: - "read-only actions do not prompt" was too absolute — some reads are themselves the sensitive act (credentials, secrets, private archives). It now reads "reads that do not expose secrets or cross a trust boundary do not prompt". - "a defect of the same severity as a missing prompt on a write" overstated it: a missing write prompt can cause damage that cannot be undone. It is now simply "a defect". Generated-by: Claude Opus 5
ff20148 to
2d940bf
Compare
Summary
## 1. Avoiding prompt fatiguetoPRINCIPLES.md, ahead of "Privacy, security, and supply-chain integrity ship before features". Per Amending these principles, adding a principle and changing the ordering require a[VOTE]on private@ mirrored to dev@, ≥3 binding +1, no binding -1, a 72-hour window, and the result recorded on dev@ and linked from the merge commit.Bash(gh *)ask rule had been prompting on everyghread since it was written, because Claude Code evaluates ask before allow regardless of specificity. Nobody noticed for months because the prompts were being clicked through — which is RFC-AI-0002 § Layer 3a's prompt-fatigue argument playing out on the framework's own maintainers. The principle names the rule the fix relied on: read-only actions do not prompt, writes prompt once in a judgeable shape, bulk work is a bounded operation, and a prompt on a read is a defect of the same severity as a missing prompt on a write.Type of change
docs/,README.md,CONTRIBUTING.md).claude/skills/<name>/) — eval fixtures updated belowtools/<system>/*.md)tools/*/withpyproject.toml)projects/_template/)prek, workflows, validators)Test plan
prek run --files <all changed files>passes, includinglychee— the renumbering touches everyPRINCIPLES.md#N-…anchor in the tree (21 files) and lychee's fragment check is what proves none danglePRINCIPLES.md#N,§Non lines that link the file, and the three unlinked "Principle N" mentions in the optimize-skill docsSKILL.mdchanged by one digit)sandbox-lint's live-vs-baseline check passes on the same working tree; rebase ontomainonce fix(agent-isolation): list gh write subcommands in ask instead of a catch-all that prompted on every read #1290 mergesRFC-AI-0004 compliance
Linked issues
Refs #1290 (the fix that motivated this), #1289.
Notes for reviewers (optional)
[VOTE]on private@magpie.apache.org mirrored on dev@magpie.apache.org will follow this PR; the merge commit must link the recorded result.PRINCIPLES.mdand the renumbering change; the text stands either way. The ordering argument is in the Summary.docs/rfcs/RFC-AI-0002.md§ Layer 3a gains one sentence linking the principle; no other RFC text changes beyond anchor numbers.🤖 Generated with Claude Code