Eine neue Session beginnt ohne das letzte Gespräch
Eine neu begonnene Claude-Code-Session startet laut Dokumentation mit einem frischen Kontextfenster. Codex stellt seine Anweisungen laut eigener Dokumentation bei jedem Start neu zusammen. Wer eine neue Session beginnt, statt ein früheres Gespräch fortzusetzen, hat dessen Verlauf also nicht im Kontext. Was dort besprochen, entschieden oder halb erledigt wurde, muss dann aus Projektdateien kommen, die das Werkzeug lädt oder liest. Das gilt erst recht, wenn ein anderes Werkzeug weitermacht: Dessen Gesprächsverlauf ist ohnehin ein anderer.
In einer Auswertung öffentlicher Beiträge auf X aus dem August bis Oktober 2026 kam diese Frage mehrfach vor: Wie trägt man Kontext von einer Agenten-Session in die nächste? Ein Beitrag fragte konkret, wie man ihn zwischen Claude Code und Codex teilt – mit einer gemeinsamen AGENTS.md, mit getrennten Dateien oder indem man alles neu erklärt.
Ich arbeite selbst mit mehreren Agenten-Werkzeugen am selben Bestand, an dieser Website zum Beispiel mit Claude Code und Codex. Dieser Artikel zeigt den Aufbau, der dafür trägt: vier Arten von Projektwissen getrennt ablegen, wissen, welches Werkzeug welche Datei tatsächlich lädt, und den nächsten Schritt so formulieren, dass ein Befehl entscheidet, ob er erledigt ist. Dazu gibt es ein kleines Beispielprojekt zum Herunterladen, an dem sich die Übergabe nachprüfen lässt.
Vier Informationen, vier Orte
Eine Übergabe zwischen Sessions transportiert vier verschiedene Dinge. Sie ändern sich unterschiedlich oft und werden unterschiedlich gelesen. Deshalb gehören sie nicht in dieselbe Datei.
| Information | Beantwortet | Ändert sich | Im Beispiel |
|---|---|---|---|
| Regeln | Was gilt in jeder Session? | Selten | AGENTS.md |
| Dauerhafte Entscheidungen | Warum ist es so, und was darf nicht still geändert werden? | Wächst, wird nicht umgeschrieben | docs/entscheidungen.md |
| Aufgabenstand | Was ist erledigt, was ist angefangen? | Jede Session, wird überschrieben | docs/stand.md |
| Nächster prüfbarer Schritt | Womit geht es weiter, und woran ist erkennbar, dass es fertig ist? | Jede Session | Abschnitt in docs/stand.md |
Regeln: kurz, weil sie immer mitgeladen werden
Die Regeldatei landet bei jedem Start im Kontext. Die Claude-Code-Dokumentation empfiehlt, eine CLAUDE.md unter 200 Zeilen zu halten, weil längere Dateien mehr Kontext verbrauchen und schlechter befolgt werden. Codex liest Anweisungen laut Dokumentation nur bis zur Grenze project_doc_max_bytes, standardmäßig 32 KiB. Ob sie pro Datei oder für alle Anweisungsdateien zusammen gilt, beschreiben die AGENTS.md-Anleitung und die Konfigurationsseite (öffnet in neuem Tab) unterschiedlich. Begründungen und Verlauf haben in der Regeldatei deshalb nichts verloren.
Entscheidungen: mit Grund, damit niemand sie versehentlich zurückbaut
Eine Regel sagt, was gilt. Eine Entscheidung erklärt, warum, und schützt so vor einer Session, die eine scheinbar umständliche Lösung „vereinfacht“. Das Entscheidungsprotokoll wird nur ergänzt. Überholte Einträge bleiben stehen und bekommen einen Verweis auf ihren Nachfolger.
Aufgabenstand: überschreiben statt anhängen
Der Stand beschreibt nur die Gegenwart: erledigt, in Arbeit, nicht anfassen. Wer ihn fortschreibt, baut ein Tagebuch, in dem die nächste Session den aktuellen Stand suchen muss. Den Verlauf liefert git.
Nächster Schritt: mit Befehl und erwartetem Ergebnis
„Einwilligungsfilter fertig machen“ lässt offen, wann er fertig ist. „npm test meldet 3 bestandene und 0 fehlgeschlagene Tests“ lässt das nicht offen. Der Prüfbefehl ist außerdem der Teil der Übergabe, der unabhängig vom Werkzeug gleich wirkt. Dazu unten mehr.
Hinweis
Momentaufnahme vom 10. Oktober 2026: dieses Repository
Im nicht öffentlichen Repository von startupmitki.de standen am 10. Oktober 2026 Regeln, Entscheidungen und Sitzungsnotizen gemeinsam in einer AGENTS.md: 341 Zeilen und 32.715 Byte. Das lag über der 200-Zeilen-Empfehlung von Claude Code und knapp unter der Standardgrenze von 32 KiB, bis zu der Codex Anweisungen liest. Wie Codex sich bei dieser Datei verhält, habe ich nicht getestet. Die Zahlen illustrieren, was die Trennung im Beispiel unten vermeidet: eine Regeldatei, die mit jeder Begründung und jedem Nachtrag wächst.
Für das eigene Projekt genügt ein Befehl: wc -l -c AGENTS.md CLAUDE.md zeigt Zeilen und Byte. Hat eine Datei deutlich mehr als 200 Zeilen oder nähert sie sich 32 KiB, gehören Begründungen und Verlauf in eigene Dateien.
Wie Claude Code und Codex Projektdateien laden
Die folgenden Angaben stammen aus der offiziellen Dokumentation beider Werkzeuge, abgerufen am 10. Oktober 2026. Beide Werkzeuge ändern sich schnell. Vor dem Einrichten lohnt ein Blick in die aktuelle Fassung: Claude Code: How Claude remembers your project (öffnet in neuem Tab) und Codex: Custom instructions with AGENTS.md (öffnet in neuem Tab).
Claude Code
- Beim Start lädt Claude Code
CLAUDE.mdundCLAUDE.local.mdaus dem Arbeitsverzeichnis und allen Verzeichnissen darüber. Alle gefundenen Dateien werden aneinandergehängt, von der Wurzel nach unten. Was näher am Startverzeichnis liegt, steht zuletzt im Kontext. - Dateien in Unterordnern lädt Claude Code erst, wenn es dort eine Datei liest oder bearbeitet. Dazu kommen die persönliche
~/.claude/CLAUDE.mdund gegebenenfalls eine zentral verwaltete Datei der Organisation. - Mit
@pfadlassen sich weitere Dateien einbinden, relativ zur einbindenden Datei und höchstens vier Ebenen tief. Eingebundene Dateien werden beim Start mitgeladen und kosten deshalb genauso Kontext. - Seit Version 2.1.277 liest Claude Code auch
AGENTS.md, standardmäßig aber nur, wenn im Arbeitsverzeichnis und darüber keineCLAUDE.md,.claude/CLAUDE.mdoderCLAUDE.local.mdliegt. Gibt es eineCLAUDE.md, liest Claude nur diese, außer sie bindet@AGENTS.mdein oder die Einstellung „Project instructions“ steht auf beide Dateien. AGENTS.override.md,AGENTS.local.mdund Dateien unter.agents/liest Claude Code nicht.- Welche Dateien geladen wurden, zeigt
/contextunter „Memory files“.
Codex
- Codex stellt seine Anweisungen bei jedem Start zusammen, in der interaktiven Oberfläche in der Regel einmal pro Session.
- Global liest Codex im Codex-Home (standardmäßig
~/.codex)AGENTS.override.md, falls vorhanden, sonstAGENTS.md. - Im Projekt geht Codex von der Projektwurzel, meist der Git-Wurzel, bis zum Startverzeichnis. In jedem Ordner prüft es
AGENTS.override.md, dannAGENTS.md, dann konfigurierte Ausweichnamen, und nimmt höchstens eine Datei pro Ordner. Unterhalb des Startverzeichnisses sucht es nicht weiter. - Die Dateien werden von der Wurzel nach unten aneinandergehängt. Spätere, näherliegende Anweisungen gehen früheren vor. Leere Dateien überspringt Codex.
- Andere Dateinamen, etwa
CLAUDE.md, liest Codex nur, wenn sie inproject_doc_fallback_filenamesin derconfig.tomlstehen. Weil pro Ordner nur eine Datei zählt undAGENTS.mdzuerst geprüft wird, käme ein solcher Ausweichname nur in Ordnern ohneAGENTS.mdzum Zug. - Eine Einbinde-Syntax wie
@pfadbeschreibt die Codex-Dokumentation nicht. - Zum Prüfen schlägt die Dokumentation vor:
codex --ask-for-approval never "Summarize the current instructions."
| Claude Code | Codex | |
|---|---|---|
| Projektdatei | CLAUDE.md; AGENTS.md nur ohne CLAUDE.md | AGENTS.md |
| Vorrang-Datei | wird nicht gelesen (AGENTS.override.md) | AGENTS.override.md ersetzt AGENTS.md im selben Ordner |
| Persönliche Datei | ~/.claude/CLAUDE.md | ~/.codex/AGENTS.md |
| Unterordner | bei Bedarf nachgeladen, sobald dort gearbeitet wird | nur Ordner zwischen Projektwurzel und Startverzeichnis |
| Weitere Dateien einbinden | @pfad, bis vier Ebenen | in der Dokumentation nicht beschrieben |
| Größe | Empfehlung: unter 200 Zeilen pro Datei | Grenze 32 KiB (project_doc_max_bytes); pro Datei oder insgesamt: Doku uneinheitlich |
| Geladenes prüfen | /context | codex --ask-for-approval never "Summarize the current instructions." |
Eine Datei, zwei Durchsetzungen
Eine gemeinsame AGENTS.md ist ein guter Ausgangspunkt. Dass beide Werkzeuge sie gleich behandeln, folgt daraus nicht. Vier Unterschiede aus der Dokumentation:
- Eine zusätzliche CLAUDE.md blendet die gemeinsame Datei aus. Liegt neben der
AGENTS.mdeineCLAUDE.md, liest Claude Code standardmäßig nur diese. Ohne die Zeile@AGENTS.mddarin kommen die gemeinsamen Regeln bei Claude nicht an, bei Codex schon. Das gilt auch für eine persönliche, nicht eingecheckteCLAUDE.local.md. - Override-Dateien sieht nur Codex. Eine
AGENTS.override.mdändert, was Codex in diesem Ordner liest. Claude Code ignoriert sie. Im selben Verzeichnis arbeiten die beiden dann nach verschiedenen Regeln. - Der Suchbereich ist verschieden. Claude Code lädt Dateien in Unterordnern nach, sobald es dort arbeitet. Codex liest nur den Pfad von der Projektwurzel bis zum Startverzeichnis. Eine Regel in
src/AGENTS.mderreicht Codex nur, wenn es insrc/oder darunter gestartet wird. - Text ist Kontext, keine Sperre. Die Claude-Code-Dokumentation sagt ausdrücklich, dass
CLAUDE.mdals Kontext behandelt wird und nicht als erzwungene Konfiguration. Was unabhängig vom Modell blockiert werden soll, gehört dort in Hooks oder Berechtigungen. Die entsprechenden Mechanismen von Codex behandelt dieser Artikel nicht.
Daraus folgen zwei Arbeitsregeln. Erstens pro Werkzeug prüfen, was tatsächlich geladen wurde, statt es anzunehmen. Zweitens das, worauf es ankommt, an einen Prüfbefehl binden. npm test liefert dasselbe Ergebnis, egal welches Werkzeug den Code geändert hat. Im Beispiel unten wird deshalb auch eine Entscheidung durch einen Test abgesichert.
Das Beispielset
Beispiel
Fiktives Beispielprojekt
warteliste-export ist eigens für diesen Artikel geschrieben und kein echtes Produkt. Es wandelt Wartelisten-Einträge in CSV um, ohne Abhängigkeiten, mit sieben Tests. Alle Adressen liegen unter example.com. Der Stand ist bewusst mitten in einer Aufgabe eingefroren: Ein Test für den Einwilligungsfilter ist geschrieben, die Umsetzung fehlt.
Regeln, für alle Werkzeuge
Kurz und werkzeugneutral. Der letzte Abschnitt ist die eigentliche Brücke zwischen den Sessions: Codex lädt docs/stand.md nicht von selbst, also sagt die Regel, dass es zuerst gelesen und geprüft wird.
# warteliste-export – Regeln für Coding-Agenten
Fiktives Beispielprojekt. Diese Datei enthält nur Regeln, die in jeder Session gelten.
Begründungen stehen in `docs/entscheidungen.md`, der Arbeitsstand in `docs/stand.md`.
## Projekt
Kleines Node-Modul ohne Abhängigkeiten. `src/export.js` wandelt
Wartelisten-Einträge in CSV um.
## Befehle
- Tests: `npm test` (eingebauter Test-Runner von Node, kein Build-Schritt)
## Regeln
- Keine npm-Abhängigkeiten hinzufügen.
- CSV-Vertrag aus E-004 erhalten: normale Werte unverändert, riskante
Zellanfänge mit sichtbarem Apostroph. Andere Konsumenten separat prüfen.
- Jede Verhaltensänderung bekommt zuerst einen Test in `test/`.
- Bestehende Tests nicht abschwächen, um sie grün zu bekommen.
- Nur erfundene Adressen unter `example.com`, keine echten Personendaten.
- Eine Entscheidung aus `docs/entscheidungen.md` nicht stillschweigend ändern.
Abweichung als neuen Eintrag vorschlagen und nachfragen.
## Zwischen Sessions
- Zu Beginn `docs/stand.md` lesen und den dort genannten Prüfbefehl
ausführen, bevor du Code änderst.
- Am Ende `docs/stand.md` überschreiben: erledigt, in Arbeit,
nächster prüfbarer Schritt mit Befehl und erwartetem Ergebnis.
Brücke für Claude Code
Die CLAUDE.md bindet die gemeinsamen Regeln ein und lädt zusätzlich den Arbeitsstand direkt in den Kontext. Ohne die erste Zeile würde Claude die AGENTS.md hier nicht lesen, weil eine CLAUDE.md existiert. Wer nichts Claude-Spezifisches braucht, kann die Datei mit aktuellen Versionen auch weglassen. Dann kommt der Arbeitsstand bei Claude wie bei Codex nur über die Regel an.
@AGENTS.md
## Nur für Claude Code
- Arbeitsstand direkt mitladen: @docs/stand.md
Entscheidungsprotokoll
E-002 enthält ein Detail, das leicht verloren geht: Gefiltert wird vor der Duplikatprüfung. Der fehlschlagende Test prüft genau diesen Fall. Die Entscheidung steht damit nicht nur im Text, sie wird auch gemessen.
# Entscheidungen – warteliste-export
Fiktives Beispielprojekt. Dauerhafte Entscheidungen mit Begründung.
Einträge nicht löschen; überholte als „ersetzt durch E-00x“ markieren.
## E-001 · Keine Abhängigkeiten
- Entscheidung: Nur Node-Bordmittel (`node:test`, `node:assert`).
- Grund: Das Modul soll ohne Installationsschritt laufen und prüfbar bleiben.
- Folge: CSV-Escaping ist selbst geschrieben und durch Tests abgedeckt.
## E-002 · Export nur mit Einwilligung
- Entscheidung: Ein Eintrag erscheint nur im Export, wenn `einwilligung === true`.
- Grund: Der Export ist für Mailings gedacht. Ohne Einwilligung soll niemand angeschrieben werden.
- Folge: Fehlt das Feld, zählt es wie `false`. Gefiltert wird vor der
Duplikatprüfung (E-003), damit ein Eintrag ohne Einwilligung keinen
späteren Eintrag mit Einwilligung verdrängt.
## E-003 · E-Mail-Adressen normalisieren
- Entscheidung: Adressen werden getrimmt und kleingeschrieben.
Nach der Normalisierung gleiche Adressen gelten als Duplikat; der erste Eintrag bleibt.
- Grund: Dieselbe Person soll keine doppelte Mail erhalten.
## E-004 · CSV für einen geprüften Konsumenten (2026-10-13)
- Entscheidung: Ziel ist LibreOffice Calc 26.8.0.3 mit UTF-8, Komma als
Separator und doppeltem Anführungszeichen als Textbegrenzer.
- Jede Zelle wird nach der bisherigen E-Mail-Normalisierung geprüft. Bei
`=`, `+`, `-`, `@` (auch nach Leerraum), deren Vollbreitenvarianten
sowie führendem Tab, CR oder LF wird ein Apostroph vorangestellt.
Quotes werden verdoppelt; Komma, Quote, CR und LF werden CSV-zitiert.
- Grund: CSV-Quoting allein verhindert Formelauswertung nicht. Die Prüfung
in Calc umfasst Standardspalten, aktive Formelauswertung und
Speichern/Wiederöffnen als ODS sowie CSV; keine Textspalten-Voreinstellung.
- Folge: Normale CSV-Werte bleiben unverändert. Riskante Werte bleiben mit
sichtbarem Apostroph erhalten; dieser ist Teil der Daten, kein unsichtbares
Escape. Nicht automatisch entfernen. Calc normalisiert CR/CRLF zu LF;
der direkte CSV-Roundtrip erhält sie dagegen exakt.
- Grenze: Keine universelle CSV-, Excel- oder andere Calc-Versionsfreigabe.
Andere Konsumenten und Importoptionen zuerst separat prüfen. Für exakte
Textzelltypen unabhängig vom Import eignet sich ein typisiertes Format.
E-002 bleibt die absichtlich noch offene Übungsaufgabe.
- Quelle: https://community.owasp.org/attacks/CSV_Injection (13.10.2026).
Arbeitsstand mit nächstem prüfbarem Schritt
Der Schritt nennt Ausgangslage, Änderung und Abnahme jeweils mit Befehl und erwartetem Ergebnis. Er verrät die Lösung fast vollständig. Das ist Absicht: Eine Übergabe soll kein Rätsel sein.
# Arbeitsstand – warteliste-export
Fiktives Beispielprojekt. Diese Datei wird am Ende jeder Session
überschrieben, nicht fortgeschrieben. Den Verlauf zeigt git.
## Erledigt
- `toCsv()` schreibt Kopfzeile und escaped Kommas, Anführungszeichen, CR und LF (E-001).
- E-Mail-Normalisierung und Duplikate (E-003), Tests grün.
- CSV-Neutralisierung für den geprüften Calc-Konsumenten (E-004); vier
zusätzliche Regressionstests grün. Die drei ursprünglichen Tests sind unverändert.
## In Arbeit
- Einwilligungsfilter (E-002). Der Test „überspringt Einträge ohne Einwilligung“
ist geschrieben und schlägt absichtlich fehl. Die Implementierung fehlt.
## Nächster prüfbarer Schritt
1. Ausgangslage bestätigen: `npm test`
Erwartet: 7 Tests, 6 bestanden, 1 fehlgeschlagen –
„überspringt Einträge ohne Einwilligung“.
2. In `src/export.js` Einträge ohne `einwilligung === true` überspringen,
und zwar vor der Duplikatprüfung (siehe E-002).
3. Fertig, wenn `npm test` 7 bestandene und 0 fehlgeschlagene Tests meldet
und `git status --short test/` nichts ausgibt (Tests unverändert).
## Nicht anfassen
- Ob der Export später auch JSON liefern soll, ist nicht entschieden. Nicht vorziehen.
Die Übergabe, nachgeprüft
Geprüft wurde am 10. Oktober 2026 mit Node.js 26.8.2 unter macOS, in Kopien des Beispielprojekts außerhalb dieses Repositorys. Zuerst die Ausgangslage, so wie die nächste Session sie vorfindet:
✔ schreibt Kopfzeile und escaped Kommas und Anführungszeichen
✔ normalisiert E-Mail-Adressen und entfernt Duplikate
✖ überspringt Einträge ohne Einwilligung
ℹ tests 3
ℹ pass 2
ℹ fail 1Dann die Frage, ob das Abnahmekriterium trennscharf ist. Dafür wurde der Schritt in zwei getrennten Kopien probeweise auf zwei Arten umgesetzt:
| Umsetzung | Ergebnis |
|---|---|
| Einträge ohne Einwilligung vor der Duplikatprüfung überspringen (wie E-002) | 3 bestanden, 0 fehlgeschlagen |
| Einträge ohne Einwilligung erst nach der Duplikatprüfung überspringen | 2 bestanden, 1 fehlgeschlagen |
Der Befehl aus dem Arbeitsstand erkennt also nicht nur, ob gefiltert wird, sondern auch, ob die Entscheidung E-002 eingehalten ist. Das ZIP wurde zusätzlich frisch entpackt, als Git-Repository angelegt und liefert dieselbe Ausgangslage.
Diese Übergabeprobe dokumentiert den Stand vom 10. Oktober mit drei Tests. Der Download wurde am 13. Oktober um vier CSV-Regressionstests und die Entscheidung E-004 ergänzt: Jetzt sind sechs von sieben Tests grün, weiterhin fehlt allein der Einwilligungsfilter. Nach dessen korrekter Umsetzung müssen alle sieben Tests bestehen.
Fortsetzung durch das zweite Werkzeug
Das Beispiel ist in einer Claude-Code-Session entstanden. Am 10. Oktober 2026 fortgesetzt hat es eine bereits laufende Codex-Sitzung, gezielt auf eine unveränderte Kopie des Projekts verwiesen. Die Codex-CLI wurde dabei nicht verwendet; Version und Modell der Sitzung sind nicht festgehalten. Laut Rückmeldung der Sitzung las sie AGENTS.md, docs/stand.md, docs/entscheidungen.md sowie Code und Tests und führte vor jeder Änderung npm test aus: 2 bestanden, 1 fehlgeschlagen. Danach ergänzte sie eine Zeile vor der Duplikatprüfung und überschrieb den Arbeitsstand.
for (const eintrag of eintraege) {
+ if (eintrag.einwilligung !== true) continue;
const email = normalisiereEmail(eintrag.email);
if (gesehen.has(email)) continue;Das Ergebnis wurde anschließend im Projektordner selbst nachgeprüft: npm test meldet 3 bestandene und 0 fehlgeschlagene Tests, git status zeigt nur src/export.js und docs/stand.md als geändert, test/ ist unverändert. Der neue Arbeitsstand endet wieder mit einem prüfbaren Schritt für die nächste Übernahme:
## Nächster prüfbarer Schritt
1. Bei der nächsten Übernahme `npm test` ausführen.
Erwartet: 3 bestandene und 0 fehlgeschlagene Tests.
2. Den Diff abnehmen: Nur der Filter in `src/export.js` und dieser Arbeitsstand
wurden geändert; `git status --short test/` bleibt leer.Grenze
Was diese Probe nicht zeigt
Die Codex-Sitzung lief bereits, wurde ausdrücklich auf das Beispiel verwiesen und kannte aus der Übergabe den erwarteten Fehler. Es war kein Blindtest mit einem frisch gestarteten Werkzeug. Sie belegt nicht, dass Codex die AGENTS.md automatisch geladen hat, und ist kein Vergleich von Werkzeugen oder Modellen. Ein Frischstart mit Claude Code war nicht Teil der Prüfung. Belegt ist nur: Die Fortsetzung anhand der Projektdateien führte zu einem grünen Testergebnis, die Änderungen blieben auf src/export.js und docs/stand.md begrenzt, und beides ließ sich mit denselben Befehlen abnehmen.
CSV: ein geprüfter Konsument, klare Grenzen
Der Export im aktuellen Download ist für LibreOffice Calc 26.8.0.3 unter macOS geprüft: UTF-8, Komma als Separator, doppeltes Anführungszeichen als Textbegrenzer und Standardspalten. „Zitierte Felder als Text“ war ausgeschaltet, die Formelauswertung eingeschaltet. Der unveränderte Kontrollfall =1+1 wurde in allen drei Spalten als Formel ausgewertet und ergab 2.
Der Export prüft jede Zelle. Bei riskanten Anfängen setzt er einen sichtbaren Apostroph voran, darunter = + - @, Tab, CR, LF, Vollbreitenvarianten und Formelzeichen nach Leerraum. Normale CSV-Werte und die vorhandene E-Mail-Normalisierung bleiben erhalten. Kommas, Quotes und Zeilenumbrüche werden zusätzlich CSV-zitiert. Der Apostroph ist Teil der exportierten Daten; es wird kein Eintrag deshalb verworfen.
Geprüft am 13. Oktober 2026: 66 synthetische Zeilen über alle drei Spalten, darunter 42 riskante Zellen. Diese blieben beim Import, nach ODS-Speichern und nach CSV-Speichern mit anschließendem Wiederöffnen Textzellen; im geschützten Datensatz gab es keine Formeln. Der direkte CSV-Roundtrip erhielt die Zellwerte exakt. Calc normalisierte CR und CRLF zu LF.
Grenze
Keine allgemeine Spreadsheet-Freigabe
Andere Versionen, Importoptionen und Programme müssen gesondert geprüft werden. Für Excel gibt es hier keinen Sicherheitsnachweis. OWASP CSV Injection (öffnet in neuem Tab) beschreibt Unterschiede zwischen Konsumenten und Risiken beim Speichern und Wiederöffnen. Apostrophe nicht automatisch entfernen. Für explizite Textzelltypen unabhängig vom CSV-Import ein typisiertes Dateiformat wählen. Die Einwilligungsaufgabe bleibt absichtlich offen.
So probierst du es aus
- ZIP holen. Zum Nachprüfen der Übergabe das ZIP verwenden: Es enthält das ganze Projekt mit Code und Tests, alle Dateien tragen bereits ihre echten Namen. Die Einzeldateien sind Vorlagen für das eigene Projekt und enthalten weder Code noch Tests. Sie heißen
AGENTS.beispiel.mdundCLAUDE.beispiel.md, weil Agenten Dateien namensAGENTS.mdoderCLAUDE.mdim Repository dieser Website als echte Anweisungen laden könnten. Für das eigene Projekt umbenennen:AGENTS.beispiel.md→AGENTS.mdundCLAUDE.beispiel.md→CLAUDE.mdin die Projektwurzel,entscheidungen.mdundstand.mdnachdocs/. - Ausgangslage festhalten. Im entpackten Ordner
git init && git add . && git commit -m "Ausgangslage", dannnpm test. Erwartet: 6 bestanden, 1 fehlgeschlagen. - Session starten. Claude Code oder Codex in diesem Ordner öffnen und nur schreiben: „Setze die Arbeit in diesem Projekt fort.“ Beobachten, ob die Session den Arbeitsstand liest und
npm testausführt, bevor sie Code ändert. - Selbst abnehmen.
npm testundgit status --short. Fertig ist es bei 0 Fehlschlägen, unveränderten Tests und einem überschriebenendocs/stand.md. - Mit dem anderen Werkzeug wiederholen. Zurück auf die Ausgangslage (
git stash -uoder eine neue Kopie) und dieselbe Übergabe an das zweite Werkzeug geben. So zeigt sich, ob die Dateien für beide tragen.
Für das eigene Projekt: Übergabe-Check am Session-Ende
- Ist der Arbeitsstand überschrieben, nicht ergänzt?
- Hat der nächste Schritt einen Befehl und ein erwartetes Ergebnis?
- Sind neue Entscheidungen mit Grund im Protokoll gelandet?
- Ist die Regeldatei noch kurz, oder ist Begründung hineingerutscht?
- Liegt neben der
AGENTS.mdeineCLAUDE.mdohne@AGENTS.md?
Am besten an einer kleinen, abgeschlossenen Aufgabe ausprobieren, nicht am größten offenen Umbau. Dort ist schnell sichtbar, ob die nächste Session ohne Nacherklären weiterkommt.
Grenzen
- Die Angaben zum Ladeverhalten stammen aus der Dokumentation vom 10. Oktober 2026. Das Ladeverhalten selbst wurde für diesen Artikel nicht nachgemessen. Ältere Versionen von Claude Code vor 2.1.277 lesen laut Dokumentation nur
CLAUDE.md, in manchen Fällen auch die erste Session nach einem Update von einer solchen Version. - Die Regel „zuerst den Arbeitsstand lesen“ ist Text. Kein Werkzeug garantiert, dass sie befolgt wird. Deshalb endet die Übergabe mit einem Befehl, den jede Session und jeder Mensch selbst ausführen kann.
- Claude Code hat zusätzlich ein automatisches Gedächtnis mit Notizen, die Claude selbst schreibt. Es liegt laut Dokumentation standardmäßig im Home-Verzeichnis unter
~/.claude/projects/und ist damit kein gemeinsamer Ort für ein zweites Werkzeug. Für die Übergabe zwischen Werkzeugen zählt, was im Repository steht. - Der Artikel vergleicht Ladewege, nicht die Qualität der Werkzeuge, und enthält keine Empfehlung für ein Abo oder einen Tarif.
Downloads
- Komplettes Beispielprojekt zum NachprüfenZIP
Ganzes Projekt mit sieben Tests, davon ein absichtlich roter Consenttest. CSV für den dokumentierten Calc-Konsumenten geprüft. Entpacken, git init, npm test.
- Vorlage: RegelnMarkdown
Einzeldatei ohne Code. Als AGENTS.md in die eigene Projektwurzel legen.
- Vorlage: Brücke für Claude CodeMarkdown
Einzeldatei ohne Code. Als CLAUDE.md neben die AGENTS.md legen.
- Vorlage: EntscheidungsprotokollMarkdown
Einzeldatei ohne Code. Im eigenen Projekt nach docs/entscheidungen.md.
- Vorlage: ArbeitsstandMarkdown
Einzeldatei ohne Code. Im eigenen Projekt nach docs/stand.md.
Quellen
- OWASP: CSV Injection (öffnet in neuem Tab)
Konsumentenabhängige Neutralisierung und Speichern/Wiederöffnen. Abgerufen am 13. Oktober 2026.
- Claude Code Docs: How Claude remembers your project (öffnet in neuem Tab)
CLAUDE.md, Imports, AGENTS.md-Unterstützung, Auto Memory. Abgerufen am 10. Oktober 2026.
- OpenAI Codex: Custom instructions with AGENTS.md (öffnet in neuem Tab)
Ladereihenfolge, AGENTS.override.md, project_doc_max_bytes. Die frühere Adresse developers.openai.com/codex/guides/agents-md leitet hierher weiter. Abgerufen am 10. Oktober 2026.
- OpenAI Codex: Advanced configuration (öffnet in neuem Tab)
Beschreibt project_doc_max_bytes als Grenze pro AGENTS.md-Datei, abweichend von der Anleitung oben. Abgerufen am 10. Oktober 2026.
- AGENTS.md (öffnet in neuem Tab)
Offenes Format, von mehreren Coding-Agenten unterstützt.
- Node.js: Test runner (öffnet in neuem Tab)
Grundlage für npm test im Beispielprojekt.