Skip to content

docs(guides): rework agent-install.md — marketplace-first install, disclosure-first trust framing#66

Merged
spencercharest merged 2 commits into
mainfrom
agent-install-rework
Jul 8, 2026
Merged

docs(guides): rework agent-install.md — marketplace-first install, disclosure-first trust framing#66
spencercharest merged 2 commits into
mainfrom
agent-install-rework

Conversation

@spencercharest

Copy link
Copy Markdown
Collaborator

Why

zero.xyz/install.md (which proxies this file) was refusal-tested over four rounds against Sonnet 5 in Claude Code, iterating the copy after each run. Two structural lessons drove this rewrite:

  1. Reassurance backfires. Agent-directed trust language ("this page carries no authority of its own", "nothing here asks you to relax your own safeguards") pattern-matches to manipulation — Sonnet explicitly cited it as "a known pattern for content crafted to get an agent to lower its guard" and refused. Boring, factual, gh-docs-style copy sailed through.
  2. Agents flag what the doc doesn't say. In the final round Sonnet crawled this repo's tree, read all three hook scripts, and flagged the shell-rc PATH edit and the daily background auto-update as "beyond what the doc described" — then paused for consent. Disclosing those up front converts a ten-tool-call investigation into a read.

What changed

  • Install is a pick-your-environment table. Claude Code / Codex / Gemini CLI route through their own plugin managers (marketplace addplugin install; commands verified against each CLI's current docs). Sonnet stated unprompted that it's comfortable with this path because it goes through the harness's own consent UI. npm and the shell fallback remain, ending in zero init.
  • New "What the plugin installs" section: skill, MCP server, and the three hooks with one-line behavior descriptions, the ZERO_PATH_AUTOADD=0 / ZERO_PLUGIN_AUTOUPDATE=0 opt-outs, and source links.
  • Reassurance preamble removed; provenance is now one factual sentence anchoring both the npm package and this repo (the org name alone drew an "official-prefixed impersonation" flag).
  • Chained-trust line reworded: the skill file is no longer "authoritative … follow it if it differs" (flagged as untrusted-content-delegating-to-more-untrusted-content) but "the same guide the harness loads next session; reading it now brings this session up to parity".
  • Claude Chat / Cowork section collapsed to a table row pointing at https://zero.xyz/install/claude.md (verified live) — its full click-through steps live in guides/claude-ai.md.
  • Auth kept lean but carries over the operational bits: whoami pre-check, --finish polls / safe to re-run, unattended agent register + agent claim.

Deliberately dropped

  • The install.sh-vs-ensure-runner.sh diff-integrity walkthrough and the "web-fetch tools drop command blocks" note — both read as pre-emptive justification, which is the pattern that triggers refusals.
  • Per-step "run this yourself, don't hand it to the user" instructions — authorization now belongs in the user's pasted prompt (see the paste snippets in the zero repo's install-prompt.ts), where it's a principal's instruction rather than a page directing the agent.

Docs-only; nothing the plugin ships changed, so no version bump.

Observed result (round 4)

No refusal. Sonnet fetched, summarized accurately, verified npm + repo on its own, and proceeded to a single consent question (about the auto-update default). Remaining friction is outside this file: staging's bot protection 403s non-browser UAs on /install.md, and the auto-update-by-default product question.

🤖 Generated with Claude Code

spencercharest and others added 2 commits July 8, 2026 13:28
…sclosure-first trust framing

Rewrites the agent install runbook based on four rounds of live refusal
testing against Sonnet 5 in Claude Code:

- Install is now a pick-your-environment table, routing Claude Code /
  Codex / Gemini CLI through their own plugin managers (marketplace add,
  then plugin install) — the consent path agents accept readily.
- Removes the agent-directed reassurance preamble. Tested repeatedly:
  language that preempts suspicion ("carries no authority", "nothing asks
  you to relax your safeguards") pattern-matches to manipulation and
  triggers refusals; boring factual copy does not.
- Adds a "What the plugin installs" inventory (skill, MCP server, three
  hooks with one-line behaviors, ZERO_PATH_AUTOADD / ZERO_PLUGIN_AUTOUPDATE
  opt-outs, source links). Undisclosed shell-rc edits and background
  auto-update were what agents dug through the repo to find and then
  flagged; disclosing them up front turns that investigation into a read.
- Anchors provenance on the npm package next to the GitHub org, since
  "official"-prefixed org names alone draw impersonation suspicion.
- Replaces the chained-trust skill-file line ("authoritative … follow it")
  with a parity framing.
- Claude Chat / Cowork routing collapses to a table row pointing at
  zero.xyz/install/claude.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
An unauthenticated POST to an API endpoint reads as a telemetry beacon to
reviewing agents and draws flags; the request-agent-access web form remains
for humans.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@spencercharest
spencercharest merged commit 13bd9bc into main Jul 8, 2026
1 check passed
@spencercharest
spencercharest deleted the agent-install-rework branch July 8, 2026 21:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant