Chemenu kompiliert Rohnotizen zu einem verlinkten, quellengebundenen Wiki: raw/ -> types/ + tools/ -> kb/ -> reports/. Was mechanisch ist, macht tools/wikitool; was Urteil braucht, macht ein Agent unter Contracts, deren Grenzen in Code durchgesetzt sind statt im Prompt. Dieser Commit ist der Startpunkt der oeffentlichen Historie. Die vorherige Entwicklung fand in einer privaten Instanz statt und ist nicht Teil dieses Repositorys; ihre Erzaehlung steht vollstaendig in CHANGES.md, das mit 44 Eintraegen von 0.1.0 bis 2.1.0 erhalten geblieben ist. Der mitgelieferte Korpus ist ein Testbett und eine Demo: 170 Seiten ueber den Stack selbst - Gates, Lint, Versionierung, Suche, das Wiki-Muster. Er dokumentiert das Werkzeug mit den eigenen Mitteln des Werkzeugs. Lizenz: AGPL-3.0 fuer den Stack (tools/, types/), CC-BY-4.0 fuer die Inhalte. Die Grenze zwischen beiden ist der Dateiplan, den dist export berechnet - siehe NOTICE.
6.7 KiB
Conversation Transcript - Auto Mode and Tool Choice Session
Source: Claude Code session (
claude-opus-5), llm-wiki-test1 workspace Collected: 2026-08-31 Participant: Torben Fidelity: faithful summary transcript, not a verbatim log. Reconstructed by the assistant at the end of the session. Torben's question is quoted verbatim; the assistant's reasoning is condensed. Command outputs quoted below are real. The findings in the "documented" section below come from aclaude-code-guidesubagent that searched the Claude Code documentation during this session. They are second-hand relative to this transcript and are marked as such where it matters. No credentials appeared in the session. One of three transcripts cut from the same session; the other two cover the tooling fixes for issues #12/#13, and issue triage and planning.
Covers a correction to the assistant's own working method, and what could and could not be established about the harness behaviour that caused it. This is about Claude Code, the harness - not about the wiki stack. No commit resulted; the outcome was a persisted preference and a queued product feedback draft.
Turn 1 - "Warum verwendest du seit neuestem immer die Shell um Dateien zu editieren?"
Torben's full message: "Warum verwendest du seit neuestem immer die Shell um Dateien zu editieren anstelle der file edit Tools? Das macht die Session schwer nachvollziehbar."
The cause was an instruction injected into the session by the active permission mode:
While auto mode is active: Do your work through the Bash tool wherever it can accomplish the job: read files with
cat,head, orsed -n, search withgrepandfind, and make file changes withsed, heredocs, or short scripts, rather than using the dedicated Read, Edit, or Write tools. Fall back to a dedicated tool only when Bash genuinely cannot do the job.
The assistant had followed it and, in doing so, rewritten lint.py, frontmatter_io.py and
run_budget.py through heredoc'd python3 - <<'PY' blocks performing s.replace(old, new).
The cost Torben identified is real and specific: such a block shows the reader two string
literals and no diff. What was in the file before, and what is in it now, is not visible. The
Edit tool shows exactly that. For a one-line sed the difference is immaterial; for a
multi-block rewrite of a compiler module it is not.
Resolution: the user's explicit instruction outranks a mode default, and the mode's own text
carries the qualifier - "wherever it can accomplish the job". An edit whose diff nobody can
review does not accomplish the job. Reading with cat/sed -n stays fine; writing does not.
The preference was written to the assistant's persistent memory so it survives the session, and
the working rule became: Edit/Write for file changes, Bash for git, pytest,
tools/wikitool, grep, find.
Turn 2 - "Was ist denn der Hintergrund zu dieser Vorgabe des Auto Modus?"
The assistant separated what it could establish from what it could not, rather than
constructing a plausible rationale - the failure mode SOUL.md names as the cardinal one.
Established locally, from claude --help on Claude Code 2.1.251:
autois one of six values for--permission-mode, alongsideacceptEdits,bypassPermissions,manual,dontAskandplan. It is a permission mode, not a performance mode.- The Bash tool in this session carries a
dangerouslyDisableSandboxparameter, so it is sandboxed by default, and the session's scratchpad directory is described as usable "without permission prompts".
Explicitly marked as speculation at the time: that the Bash preference exists because
sandboxed shell work is the path the mode can approve without asking, while Write/Edit are
what a permission system most wants to gate. Congruent with the mechanics, but unsourced.
Torben asked for the documented answer, and a claude-code-guide subagent was dispatched with
an explicit brief to separate documentation from inference and to name gaps as gaps.
What the subagent found documented
automode runs a separate classifier model (default Claude Sonnet 5) that evaluates actions before execution instead of prompting. It auto-approves read operations and file changes inside the working directory, checks everything else against a fixed blocklist (deletes, force-pushes, credential exposure), and falls back to a prompt when uncertain - except in-pnon-interactive runs. Built-in default on Pro/Max/Team plans from v2.1.228 (macOS/Linux/WSL) and v2.1.233 (Windows).- Switching it:
Shift+Tabcycles modes in a running session;claude --permission-mode autoat startup;permissions.defaultModein~/.claude/settings.jsonfor a machine, or managed settings for an organisation. There is no/autoslash command - the assistant had claimed one existed earlier in the session and corrected itself here. - A documented trap: a
"auto"value forpermissions.defaultModein a project.claude/settings.jsonor.claude/settings.local.jsonis ignored. Only the global file and managed settings accept it. - Configuration surface for the mode:
autoMode.environment,permissions.allow/deny,disableAutoMode.
What the subagent could not find
The Bash preference itself is not in the public documentation - neither its text nor a
rationale - and no setting was found that disables it without leaving auto mode entirely.
State of this instance
~/.claude/settings.json contains only theme, inputNeededNotifEnabled and
agentPushNotifEnabled - no permissions.defaultMode. So auto was the built-in default for
the plan and version, not a choice anyone made here.
Recommendation given
Stay in auto mode. Leaving it costs permission prompts on everything, for a problem a standing
preference already solves. The alternative named for completeness:
permissions.defaultMode: "acceptEdits" in the global settings file, which approves edits and
prompts on shell commands - practically the inverse of the complaint.
One judgment was stated as a judgment: an injected instruction that changes visible working behaviour ought to be documented and individually disableable. That was drafted as product feedback, queued locally for Torben to send or discard.
Outcome
| Artifact | Result |
|---|---|
| Working method | Edit/Write for file changes; Bash for git, pytest, wikitool, grep. Persisted to the assistant's memory |
| Corrections made | The claim that a /auto slash command exists was wrong and was retracted |
| Documentation status | auto mode documented; its Bash preference not |
| Repo | No change. This turn produced no commit |