--- type: types/source.md source_type: notes author: Claude Code (claude-opus-5) raw_files: [raw/notes/Conversation Transcript - Auto Mode and Tool Choice Session 2026-08-31.md] source_language: en date: 2026-08-31 tags: [claude-code, auto-mode, permissions, tool-choice, harness] entities: [Claude Code, wikitool] concepts: [Claude Code Auto Mode, Diff-Reviewable Agent Edits] summary: 'Sitzung zum auto-Berechtigungsmodus von Claude Code: die vom Modus injizierte Bash-Praeferenz, ihre Korrektur zugunsten diffbarer Edits, und was zur Dokumentationslage belegt bzw. nicht belegt ist' --- # Source: Conversation - Auto Mode and Tool Choice Session 2026-08-31 **Autor:** Claude Code (claude-opus-5) **Datum:** 2026-08-31 **Raw-Dateien:** raw/notes/Conversation Transcript - Auto Mode and Tool Choice Session 2026-08-31.md **Typ:** Notes ## Zusammenfassung Das Transkript ist eine vom Assistenten am Sitzungsende rekonstruierte Zusammenfassung, kein wörtliches Protokoll. Es ist eines von drei Transkripten derselben Sitzung; die beiden anderen behandeln die Werkzeugkorrekturen zu den Issues #12 und #13 ([[Source - Conversation - Comma Bug Budget Refund and Lint Report Path Session 2026-08-31]]) und die Issue-Triage ([[Source - Conversation - Issue Triage Labels and TODO Retirement Session 2026-08-31]]). Gegenstand ist ausdrücklich nicht der Wiki-Stack, sondern [[Claude Code]] als Harness. Die Sitzung erzeugte keinen Commit; ihr Ergebnis war eine dauerhaft gespeicherte Arbeitsregel und ein lokal abgelegter Entwurf für Produkt-Feedback. Die Quelle trägt Material aus **drei Erfassungsschichten**, und ihr Kopfblock benennt sie selbst. Diese Unterscheidung ist der wichtigste Teil der Quelle und wird auf allen von ihr gestützten Seiten mitgeführt: | Schicht | Was darunter fällt | Belegwert | |---|---|---| | Lokal belegt | Ausgabe von `claude --help` auf Claude Code 2.1.251, Inhalt von `~/.claude/settings.json`, Existenz des `dangerouslyDisableSandbox`-Parameters am Bash-Werkzeug, Torbens wörtliche Aussagen | In der Sitzung selbst bezeugt | | Aus zweiter Hand | Alles im Abschnitt "What the subagent found documented": ein `claude-code-guide`-Subagent hat die Claude-Code-Dokumentation durchsucht und berichtet. Niemand in der Sitzung hat diese Dokumentation selbst gelesen | Vermittler in der Kette, Treue ist Annahme | | Ausdrücklich unbelegt | Die Vermutung, die Bash-Präferenz hänge mit der Sandbox zusammen | Zum Zeitpunkt der Äußerung als Spekulation markiert und vom Subagenten **nicht** bestätigt | Der Anlass war eine Beschwerde über die Arbeitsweise des Assistenten. Torbens Frage wörtlich: *"Warum verwendest du seit neuestem immer die Shell um Dateien zu editieren anstelle der file edit Tools? Das macht die Session schwer nachvollziehbar."* Ursache war eine vom aktiven Berechtigungsmodus in die Sitzung injizierte Anweisung, die Bash den dedizierten Datei-Werkzeugen vorzieht: > While auto mode is active: Do your work through the Bash tool wherever it can accomplish the > job: read files with `cat`, `head`, or `sed -n`, search with `grep` and `find`, and make file > changes with `sed`, 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. Der Assistent war ihr gefolgt und hatte `lint.py`, `frontmatter_io.py` und `run_budget.py` über heredoc'te `python3 - <<'PY'`-Blöcke mit `s.replace(old, new)` umgeschrieben. Die daraus abgeleitete Regel steht auf [[Diff-Reviewable Agent Edits]], die Mechanik des Modus auf [[Claude Code Auto Mode]]. ## Kernaussagen - **Der benannte Schaden ist die fehlende Diff.** Ein `python3 - <<'PY'`-Block mit `s.replace(old, new)` zeigt dem Leser zwei String-Literale und keine Änderungsansicht. Was vorher in der Datei stand und was jetzt darin steht, ist nicht sichtbar; das `Edit`-Werkzeug zeigt genau das. Bei einem einzeiligen `sed` ist der Unterschied unerheblich, beim Mehrblock-Umbau eines Compiler-Moduls nicht. - **Die Auflösung stützt sich auf den Wortlaut der Anweisung selbst.** Deren Qualifikator *"wherever it can accomplish the job"* trägt die Entscheidung: ein Edit, dessen Diff niemand prüfen kann, erfüllt die Aufgabe nicht. Zusätzlich rangiert die ausdrückliche Anweisung des Nutzers über einer Modus-Voreinstellung. Lesen mit `cat`/`sed -n` bleibt zulässig, Schreiben nicht. Die daraus gewordene Arbeitsregel: `Edit`/`Write` für Dateiänderungen, Bash für `git`, `pytest`, [[wikitool]], `grep` und `find`. Sie wurde in das dauerhafte Gedächtnis des Assistenten geschrieben, damit sie die Sitzung überdauert. - **`auto` ist ein Berechtigungsmodus, kein Performance-Modus** - lokal belegt aus `claude --help` auf Version 2.1.251: einer von sechs Werten für `--permission-mode`, neben `acceptEdits`, `bypassPermissions`, `manual`, `dontAsk` und `plan`. - **Das Bash-Werkzeug dieser Sitzung führt einen `dangerouslyDisableSandbox`-Parameter**, ist also standardmäßig sandboxed; das Scratchpad-Verzeichnis der Sitzung wird als ohne Berechtigungsabfragen nutzbar beschrieben. Lokal belegt. - **Aus zweiter Hand (`claude-code-guide`-Subagent):** `auto` lässt ein separates Klassifikator-Modell Aktionen vor der Ausführung bewerten, statt nachzufragen. Details, Schaltwege und die dokumentierte Falle mit `permissions.defaultMode` in einer Projekt-Settings-Datei stehen auf [[Claude Code Auto Mode]]. - **Der belastbare Negativbefund:** die Bash-Präferenz selbst steht **nicht** in der öffentlichen Dokumentation - weder ihr Text noch eine Begründung - und es wurde keine Einstellung gefunden, die sie einzeln abschaltet, ohne `auto` ganz zu verlassen. - **Die Sandbox-Erklärung blieb Vermutung.** Dass die Bash-Präferenz existiert, weil sandboxed Shell-Arbeit der Pfad ist, den der Modus ohne Rückfrage genehmigen kann, während `Write`/`Edit` das sind, was ein Berechtigungssystem am ehesten absichern will, wurde in der Sitzung ausdrücklich als Spekulation gekennzeichnet und vom Subagenten nicht bestätigt. - **Eine Korrektur im Verlauf:** die früher in der Sitzung geäußerte Behauptung, es gebe einen `/auto`-Slash-Command, war falsch und wurde zurückgenommen. - **Zustand dieser Instanz:** `~/.claude/settings.json` enthält nur `theme`, `inputNeededNotifEnabled` und `agentPushNotifEnabled`, kein `permissions.defaultMode`. `auto` war also die eingebaute Voreinstellung für Plan und Version, keine hier getroffene Wahl. - **Empfehlung der Sitzung:** in `auto` bleiben. Der Ausstieg kostet Berechtigungsabfragen auf allem, für ein Problem, das eine stehende Arbeitsregel bereits löst. Als Alternative wurde `permissions.defaultMode: "acceptEdits"` in der globalen Settings-Datei genannt - genehmigt Edits, fragt bei Shell-Kommandos nach und ist damit praktisch die Umkehrung der Beschwerde. ## Aufgaben - [ ] Der Entwurf für Produkt-Feedback - eine injizierte Anweisung, die das sichtbare Arbeitsverhalten ändert, sollte dokumentiert und einzeln abschaltbar sein - liegt lokal und wartet darauf, dass Torben ihn abschickt oder verwirft. ## Nicht übernommen - **Die konkreten heredoc-Umbauten an `lint.py`, `frontmatter_io.py` und `run_budget.py`.** Sie gehören inhaltlich zu den Issues #12/#13 und sind auf [[Source - Conversation - Comma Bug Budget Refund and Lint Report Path Session 2026-08-31]] erfasst. Hier zählen sie nur als Beispiel für die Diff-Frage. - **Die Sandbox-Hypothese als Erklärung.** Bewusst nicht auf eine Seite übernommen: sie war als Spekulation gekennzeichnet und wurde nicht bestätigt. Übernommen wurde stattdessen der Negativbefund, dass die Dokumentation zur Bash-Präferenz schweigt. - **Die vollständige Aufzählung der sechs `--permission-mode`-Werte mit ihren Bedeutungen.** Nur `auto` war Gegenstand der Sitzung; für die anderen fünf liegt außer dem Namen nichts vor, und eine Seite, die sie erklärt, würde das erfinden. - **Der Wortlaut des Feedback-Entwurfs.** Er ist unabgeschickter Entwurfstext, kein Befund. ## Verwandte Entities - [[Claude Code]] - [[wikitool]] ## Verwandte Concepts - [[Claude Code Auto Mode]] - [[Diff-Reviewable Agent Edits]]