Skip to content

principles: add "Avoiding prompt fatigue" as §1, ahead of the security principle (PMC vote required) - #1291

Merged
potiuk merged 2 commits into
mainfrom
principles/avoid-prompt-fatigue
Sep 24, 2026
Merged

potiuk merged 2 commits into
mainfrom
principles/avoid-prompt-fatigue

Conversation

@potiuk

@potiuk potiuk commented Sep 19, 2026

Copy link
Copy Markdown
Member

Summary

  • Principle amendment proposal — needs a PMC vote before merge. Adds ## 1. Avoiding prompt fatigue to PRINCIPLES.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.
  • Why now: fix(agent-isolation): list gh write subcommands in ask instead of a catch-all that prompted on every read #1290 found that the reference config's catch-all Bash(gh *) ask rule had been prompting on every gh read 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.
  • Placement before the security principle is deliberate and is the part most worth debating on the vote thread: earlier principles outrank later ones, and the claim here is that a confirmation the human has learned to click through is no control at all, so keeping prompts meaningful is a precondition of the security principle, not a competitor to it.

Type of change

  • Cross-cutting (RFC, AGENTS.md, sandbox, privacy-LLM)
  • Documentation (docs/, README.md, CONTRIBUTING.md)
  • Skill change (.claude/skills/<name>/) — eval fixtures updated below
  • Tool / bridge contract (tools/<system>/*.md)
  • Python package (tools/*/ with pyproject.toml)
  • Groovy reference impl
  • Project template (projects/_template/)
  • CI / dev loop (prek, workflows, validators)
  • Other:

Test plan

RFC-AI-0004 compliance

  • HITL — the principle strengthens the confirmation gate by keeping it readable; it does not remove any prompt on a write
  • Sandbox — n/a
  • Vendor neutrality — no project-specific values
  • Conversational + correctable — n/a
  • Write-access discipline — n/a
  • Privacy LLM — n/a

Linked issues

Refs #1290 (the fix that motivated this), #1289.

Notes for reviewers (optional)

  • Vote threads: a [VOTE] on private@magpie.apache.org mirrored on dev@magpie.apache.org will follow this PR; the merge commit must link the recorded result.
  • If the PMC prefers the principle after the security principle, only PRINCIPLES.md and 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

@potiuk
potiuk marked this pull request as draft September 19, 2026 11:56
Base automatically changed from fix/gh-ask-rule-precedence to main September 19, 2026 12:18
@potiuk

potiuk commented Sep 19, 2026

Copy link
Copy Markdown
Member Author

Converted to draft while the Vote is runnning https://lists.apache.org/thread/bl8lhj9c0jls8h5s3172vw6gg1pvwkwb

@potiuk
potiuk force-pushed the principles/avoid-prompt-fatigue branch from 0c1eb03 to 216f76f Compare September 22, 2026 14:56
@potiuk
potiuk marked this pull request as ready for review September 22, 2026 14:57
@potiuk
potiuk force-pushed the principles/avoid-prompt-fatigue branch 2 times, most recently from 063607b to ff20148 Compare September 22, 2026 19:24
@Kaap10

Kaap10 commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

+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:

"a bulk operation is a bounded shape (a vetted operation with typed parameters) rather than N confirmations"

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!

@potiuk

potiuk commented Sep 23, 2026

Copy link
Copy Markdown
Member Author

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."

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).

@Kaap10

Kaap10 commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

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
@potiuk
potiuk force-pushed the principles/avoid-prompt-fatigue branch from ff20148 to 2d940bf Compare September 24, 2026 16:37
@potiuk
potiuk merged commit bcd8b7f into main Sep 24, 2026
11 checks passed
@potiuk
potiuk deleted the principles/avoid-prompt-fatigue branch September 24, 2026 16:44
@potiuk potiuk added contract:security-cross-ref Tool capability: vulnerability database / cross-reference alias lookup (OSV.dev / NVD) substrate:framework-dev Tool substrate: build / validate / eval the framework itself labels Sep 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contract:security-cross-ref Tool capability: vulnerability database / cross-reference alias lookup (OSV.dev / NVD) substrate:framework-dev Tool substrate: build / validate / eval the framework itself

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants