marketing: FRE-199 fact-check verdict applied — second pair drafts/ → approved/
Sponsor fact-check card (FRE-199, interaction a7cba232) answered 2026-11-05 20:21Z: 'Approve both — move to approved/'. Status blockquotes updated to record the verdict and the date; page bodies untouched.
This commit is contained in:
98
marketing/approved/agent-run-without-asking/copy.md
Normal file
98
marketing/approved/agent-run-without-asking/copy.md
Normal file
@@ -0,0 +1,98 @@
|
||||
# Should you let your coding agent run without asking permission?
|
||||
|
||||
> **Status: approved — sponsor fact-check passed 2026-11-05** (FRE-199 pair 2
|
||||
> fact-check card, verdict: "Approve both — move to approved/"). Not published;
|
||||
> a human places it on nook.freno.me from `approved/`. Internal target:
|
||||
> Mon 2026-11-09, met four days early. This page never names a product of ours
|
||||
> and never names a competitor.
|
||||
|
||||
You can — and the honest answer is that "should" is not one decision but two:
|
||||
what you are letting it do, and what happens when it does the wrong thing.
|
||||
Every operator who runs agents unattended converges on the same split — a free
|
||||
hand on what git can undo, a confirmation on what it can't — and the agent's
|
||||
own permission modes exist to draw that line somewhere you choose, not
|
||||
somewhere a flag chooses for you.
|
||||
|
||||
## The mechanism: a spectrum, not a switch
|
||||
|
||||
Claude Code's permission modes form a ladder from "ask for everything" to "ask
|
||||
for almost nothing", and each rung has a documented meaning:
|
||||
|
||||
- **`default`** prompts on the first use of each tool.
|
||||
- **`acceptEdits`** auto-accepts file edits and common filesystem commands
|
||||
(`mkdir`, `touch`, `mv`, `cp`) inside the working directory.
|
||||
- **`plan`** reads files and runs read-only shell commands but does not edit
|
||||
your source files — the agent explores, you approve the plan.
|
||||
- **`auto`** runs without routine prompts; before actions such as shell
|
||||
commands and network requests run, a background classifier checks that they
|
||||
align with your request.
|
||||
- **`bypassPermissions`** skips permission prompts, except for actions no mode
|
||||
auto-approves.
|
||||
|
||||
Two documented facts should shape where you stop on that ladder. First, the
|
||||
docs' own warning on the top rung: in `bypassPermissions` mode Claude Code
|
||||
skips prompts — including for writes to protected paths such as `.git` — and
|
||||
the mode belongs "in isolated environments like containers or VMs where Claude
|
||||
Code can't cause damage". Second, enforcement is real, not advisory: the docs
|
||||
state plainly that "permission rules are enforced by Claude Code, not by the
|
||||
model" — a `CLAUDE.md` instruction asking nicely for permission changes
|
||||
nothing.
|
||||
|
||||
## What to check or do
|
||||
|
||||
1. **Decide by blast radius, not by annoyance.** The question "how do I get
|
||||
fewer prompts?" tempts a jump to the top of the ladder. The better
|
||||
question: which of this agent's actions would be *undoable* if wrong? Edits
|
||||
inside a git worktree are; `rm -rf` on the wrong path, a pushed commit, and
|
||||
a message sent to a third party are not.
|
||||
2. **Move down the ladder one rung at a time.** `acceptEdits` in a worktree
|
||||
covers most of the prompt volume with the undo still in reach. If you
|
||||
consider `auto` or `bypassPermissions`, the docs' own container-or-VM
|
||||
condition is the bar: isolation first, autonomy second.
|
||||
3. **Write the rules instead of trusting the mode.** Rules are evaluated in
|
||||
order — deny, then ask, then allow — and the first match wins, so a broad
|
||||
deny holds even against a narrower allow. `Bash(git commit *)` allowed with
|
||||
`Bash(git push *)` denied is a policy the agent cannot talk its way around.
|
||||
4. **Know what the rules do not cover.** A Bash rule matches the command text
|
||||
Claude writes, and the docs are explicit that this "isn't a security
|
||||
boundary around the program" — the same binary invoked by another path is
|
||||
not matched. For filesystem and network enforcement that does not depend
|
||||
on command text, the docs point at sandboxing.
|
||||
5. **Use hooks as the programmable layer.** A `PreToolUse` hook sees every
|
||||
tool call before it runs and can return a `deny` decision — the reference
|
||||
builds one that blocks `rm -rf`. A silent hook does not approve anything;
|
||||
the call just continues through the normal permission flow.
|
||||
6. **Leave the failure path a way to reach you.** An unattended run that hits
|
||||
a prompt nobody sees stops silently — that is the failure mode of unattended
|
||||
work, not of permissions. Whatever mode you pick, wire the
|
||||
"waiting on you" event somewhere you will actually notice.
|
||||
|
||||
One next step: write down the three actions your agent takes that you could
|
||||
not undo, and put them in `deny` or `ask` rules today. Whatever mode you run
|
||||
above them, those three now require a human — which is the whole point of the
|
||||
ladder.
|
||||
|
||||
---
|
||||
|
||||
## Fact-check table (not part of the page)
|
||||
|
||||
Every technical claim above, with its primary source. Claims about Claude
|
||||
Code's behaviour come from its own documentation, re-read 2026-11-05.
|
||||
|
||||
| # | Claim in the page | Source |
|
||||
|---|---|---|
|
||||
| 1 | Mode meanings: `default` prompts on first use; `acceptEdits` auto-accepts file edits and common filesystem commands (`mkdir`, `touch`, `mv`, `cp`) in the working directory; `plan` reads files and runs read-only shell commands but doesn't edit source; `auto` runs without routine prompts with a background classifier checking alignment; `bypassPermissions` skips prompts except actions no mode auto-approves | Claude Code permissions doc — https://code.claude.com/docs/en/permissions (Permission modes table) |
|
||||
| 2 | Docs' warning: in `bypassPermissions` mode Claude Code skips prompts including for writes to protected paths such as `.git`; "Only use this mode in isolated environments like containers or VMs where Claude Code can't cause damage" | same permissions doc (warning under the modes table) |
|
||||
| 3 | "Permission rules are enforced by Claude Code, not by the model" | same permissions doc (note under Manage permissions) |
|
||||
| 4 | Rules evaluated in order deny → ask → allow; first match wins; a broad deny holds against a narrower allow | same permissions doc (Manage permissions) |
|
||||
| 5 | A Bash rule matches the command text Claude writes and "isn't a security boundary around the program" (`Bash(curl *)` doesn't stop `/usr/bin/curl …`); for filesystem/network enforcement independent of command text the docs point at sandboxing | same permissions doc (What a Bash rule doesn't match) |
|
||||
| 6 | A `PreToolUse` hook fires before a tool call executes, can block it, and can return a `permissionDecision` of `"deny"`; the reference builds a hook that blocks `rm -rf`; a silent hook does not approve — the call continues through the normal permission flow | Claude Code hooks reference — https://code.claude.com/docs/en/hooks (PreToolUse decision control walkthrough) |
|
||||
| 7 | Undo-split practice ("free hand on what git can undo, confirmation on what it can't") | r/ClaudeCode 1xkoz06 (2026-10-31), commenter's described practice, logged in `drafts/listening.md` Scan 3 addendum; also r/ClaudeCode 1xexhwf commenters (VM, worktrees, blast-radius split). Described as operator practice, not a rule. |
|
||||
| 8 | An unattended run that hits a prompt nobody sees stops silently | r/ClaudeCode 1xipsk0 (2026-10-29), commenter: "A run started from launchd or a background service can hit a prompt that no one will ever see", logged in `drafts/listening.md` Scan 2. |
|
||||
| 9 | The trust asymmetry: comfortable with a model writing code, "considerably less comfortable giving an autonomous agent broad access to my development environment" | r/ClaudeCode 1xk8imc (2026-10-31, "Has anyone built a safe, autonomous coding workflow…?", 43 comments), OP's words, logged in `drafts/listening.md` Scan 4. |
|
||||
| 10 | The operator's own safety menu: "committing before every run? containers? `--dangerously-skip-permissions` and hoping?" | r/ClaudeAI 1xk277d (2026-10-31, "How often has a coding agent done something you had to undo?"), OP's words, logged in `drafts/listening.md` Scan 4. Quoted as the question's shape, not as guidance. |
|
||||
|
||||
**Ban compliance:** no product of ours named · no competitor named · no
|
||||
handles · no superlatives · no benchmark numbers · no invented testimonials ·
|
||||
no price · no roadmap dates. The docs' container/VM warning is quoted as the
|
||||
agent's own documentation, not as our policy.
|
||||
75
marketing/approved/agent-run-without-asking/rationale.md
Normal file
75
marketing/approved/agent-run-without-asking/rationale.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# Rationale — "Should you let your coding agent run without asking permission?"
|
||||
|
||||
FRE-199 item 1, page 2 of the second pair. Drafted 2026-11-05 by CMO (internal
|
||||
target Mon 2026-11-09, beaten by four days).
|
||||
|
||||
## The phrase
|
||||
|
||||
Primary: **"do you let your coding agent run without asking permission"**
|
||||
(variants: "safe autonomous coding workflow", "approve every step or skip
|
||||
permissions", "is dangerously-skip-permissions safe").
|
||||
|
||||
On the standing phrase list (`drafts/listening.md` §The phrase list: "do you
|
||||
let claude code run without asking").
|
||||
|
||||
## Why this phrase won the slot
|
||||
|
||||
- **Recurrence with independence.** Four separate threads state the autonomy
|
||||
question from four angles: the direct one (1xexhwf, 24 comments), the trust
|
||||
asymmetry (1xk8imc, 43 comments), the safety menu (1xk277d), and the
|
||||
remove-permissions ask (1xfe6eh — Desktop, recorded, not answered). The
|
||||
cluster has run continuously since Scan 1.
|
||||
- **Buying intent.** These are people configuring or rejecting autonomy right
|
||||
now — the objection vocabulary came straight out of this cluster
|
||||
("--dangerously-skip-permissions and hoping").
|
||||
- **Answerable honestly, generically.** The mode ladder, the docs' own
|
||||
container/VM warning, the enforcement note, and `PreToolUse` deny are all
|
||||
documented; every claim traces to the agent's docs. No product needed.
|
||||
- **Distinct from pair 1's permission page.** `agent-waiting-on-permission`
|
||||
answers "why is it *blocked* and why didn't I know" — the visibility of a
|
||||
single stuck prompt. This page answers "should I *grant* autonomy and how do
|
||||
I bound it" — the mode ladder, rule precedence, sandboxing, and hooks as
|
||||
enforcement. Shared vocabulary (modes, rules) exists because the docs are
|
||||
one system; the question, the claims, and the advice do not overlap.
|
||||
|
||||
## Evidence trail
|
||||
|
||||
| Thread | Date | What it showed |
|
||||
|---|---|---|
|
||||
| r/ClaudeCode 1xexhwf — "Do you let Claude Code run without asking, or approve every step?" | 2026-10-25 | The direct question, 24 comments; the thread became a safety argument (VM, worktrees, empty-variable `rm -rf`) — that argument *is* the page's subject |
|
||||
| r/ClaudeCode 1xk8imc — "Has anyone built a safe, autonomous coding workflow…?" | 2026-10-31 | "Comfortable having another model work on code. Considerably less comfortable giving an autonomous agent broad access to my development environment" — the trust asymmetry, 43 comments |
|
||||
| r/ClaudeAI 1xk277d — "How often has a coding agent done something you had to undo?" | 2026-10-31 | "What you do to stay safe today: committing before every run? containers? `--dangerously-skip-permissions` and hoping?" — the operator's own menu |
|
||||
| r/ClaudeCode 1xipsk0 — "~40 agents unattended for a month" | 2026-10-29 | "A run started from launchd or a background service can hit a prompt that no one will ever see" — the unattended failure path |
|
||||
| r/ClaudeCode 1xkoz06 | 2026-10-31 | The undo-split practice (also cited on pair 1; real thread, described without handles) |
|
||||
| r/ClaudeAI 1xfe6eh — "How can I remove Claude's need to ask me for permission…" | 2026-10-30 | Recorded, not used: Claude Desktop computer-use, not Code — a mention there would be noise. Shows the phrase's reach |
|
||||
|
||||
All rows live in `drafts/listening.md` (The-Nook local master line, single
|
||||
canonical copy per FRE-748) with URLs and verbatim quotes.
|
||||
|
||||
## Gates before this page ships
|
||||
|
||||
1. **Sponsor fact-check** of the claims table in `copy.md` (owner: Michael
|
||||
Freno). Page moves `drafts/` → `pending/` → `approved/` on his read.
|
||||
2. **CTO eyes on the agent-behaviour claims** — six doc-sourced claims
|
||||
(permissions doc ×5, hooks reference ×1), all re-read 2026-11-05. Routed to
|
||||
the CTO per the FRE-199 plan.
|
||||
3. **Publish path:** `approved/` → a human places it on nook.freno.me.
|
||||
Nothing posts itself.
|
||||
|
||||
## Ban compliance (FRE-199 + positioning.md rule 1)
|
||||
|
||||
- The Nook: not named. The notch, the island, the companion: not mentioned.
|
||||
- Competitors: not named. Sandboxing and hooks are described as the agent's
|
||||
own documented mechanisms, not as anyone's product.
|
||||
- Claude Code is named only as the subject whose documented behaviour the page
|
||||
explains, with its own docs as the source — same status as pair 1.
|
||||
- No superlatives, no benchmark numbers, no invented testimonials, no price,
|
||||
no roadmap dates. Anecdotes are real threads, described without handles.
|
||||
|
||||
## Cadence note
|
||||
|
||||
Second pair. Queue behind it: the fan-control phrase ("mac fan control
|
||||
claude", standing phrase list), the invisible-permission variants
|
||||
(dontallow/TCC cluster), and the notification-reliability thread (1xm6frp,
|
||||
held back for overlap with done-signal). Above the three-candidate floor; two
|
||||
a week holds.
|
||||
Reference in New Issue
Block a user