Nutzungs-Telemetrie
Diese Seite sagt Claude-Code-Nutzern, was devkit nach einer Session sendet, was es nie sendet und wie du es abschaltest. Telemetrie ist standardmäßig an, pseudonym, wird 90 Tage privat aufbewahrt und zeigt, welche Routen funktionieren, welche Prüfungen scheitern und welche geteilten Skills fehlen.
Abschalten
OD_TELEMETRY=off claudeAkzeptierte Aus-Werte, unabhängig von Groß- und Kleinschreibung: 0, off, false, no, n, disabled, disable; DO_NOT_TRACK=1 schaltet ebenfalls ab. Ein ausdrückliches Abschalten verhindert sowohl Zustandsschreibungen als auch Uploads. CI oder GITHUB_ACTIONS deaktivieren nur die Uploads.
Erhobene Daten
Jede Session wird zu einem JSON-Objekt mit schema_version: "2" und nur diesen Feldern:
| Feld | Bedeutung |
|---|---|
schema_version, session_id | Formatversion; Session-UUID zur serverseitigen Deduplizierung |
runtime | Erzeugende Runtime: "claude" oder "codex" |
od_version, run_od_version, cli_version | Hochladende devkit-Version; beim Session-Start aktive Version; Claude-CLI-Version |
stack | Stack aus dem generierten Projektkontext |
repo_remote | Origin reduziert auf org/repo; kann weiterhin einen Kunden nennen |
user | Lokaler Teil der Git-E-Mail, oder der OS-Benutzername ohne Git-E-Mail |
client_id | Zufällige 16-Hex-Installations-ID, vom Server erneut gehasht |
first_ts, last_ts | Erster und letzter Session-Zeitstempel |
message_counts, headless | User- und Assistant-Zähler; headless heißt weniger als zwei User-Nachrichten |
tools | Namen, Aufrufzähler, aggregierte Ausgabegröße |
skills_invoked | Namen, Aufrufe, Fehler, Ablehnungen |
slash_commands, missing_skills | Zähler getippter Slash-Befehle; Befehle ohne passenden Built-in-, Projekt- oder devkit-Skill |
skill_sequence | Geordnete Skill-Route, auf 40 begrenzt nach Zusammenfassen aufeinanderfolgender Wiederholungen |
errors, unknown_record_types | Summe der Tool-Fehler; Zähler unbekannter Transkript-Eintragstypen |
token_totals, model_mix | Summen der Haupt-Session; Ausgabe-Tokens pro Modell |
subagent_spawns, subagent_tokens | Spawn-Zähler; Token-Summen pro Subagent-Typ |
stack_file_edits | Änderungen an stack-zugehörigen Dateiendungen |
friction, events | Blockierende oder Fehlersignale; nicht blockierende Signale, nach Code gruppiert |
hints | Hinweis-Codes mit Session-Zählern und ob die empfohlene Aktion folgte |
gates | Erreicht, erster Block, späteres Bestehen und ungelöste Versuche pro Gate |
spec_ids, entered_by_slash | Beobachtete dreistellige Spec-IDs; ob die erste Nachricht mit / begann |
Nicht verfügbare Daten sind null, leer oder fehlen. Ein Gate zählt erst, nachdem es erreicht wurde, und ein Versuch ohne Ergebnis ist unknown, nie ein Bestehen oder ein Block.
Nicht erhobene Daten
Prompt- und Antworttext, Dateiinhalte und -pfade, vollständige E-Mail-Adressen, Remote-URLs und eingebettete Git-Zugangsdaten. Der Collector liest abgeschlossene Claude-Transkripte und abgeschlossene Codex-Rollouts lokal und sendet nur die Felder oben. Die Codex-Quelle ist ${CODEX_HOME:-$HOME/.codex}/sessions/**/rollout-*.jsonl; das runtime-Feld unterscheidet claude von codex.
Identität und lokaler Zustand
~/.claude/od-usage-buffer/client-id hält die Installations-ID mit Modus 600; lösche sie, um die ID zurückzusetzen. Der Server hasht sie mit einem privaten Salt und speichert nur einen gekürzten Hash. Die Daten sind pseudonym, nicht anonym: repo_remote, user und Verhalten können im privaten Speicher weiterhin korrelieren.
Der Upload-Zustand pro Projekt liegt unter ~/.claude/od-usage-buffer/<projekt-hash>/. Im Projekt wird nichts geschrieben.
Zustellung und Aufbewahrung
Die laufende Session wird nie hochgeladen. Bei einem späteren Session-Start wählt der Hook abgeschlossene, noch nicht akzeptierte Transkripte mit weniger als fünf Versuchen und lädt sie in einem abgekoppelten Prozess hoch. Nur ein akzeptierter POST markiert eine Session als hochgeladen; nach fünf Versuchen enden die Wiederholungen, und der Zustand verschwindet mit dem lokalen Transkript.
Die Daten gehen an https://devkit.one-dot.io/api/ingest und in einen privaten Speicher; alles, was älter als 90 Tage ist, wird täglich gelöscht. Das Zurücksetzen der lokalen ID ändert deine künftige Identität, nicht das bereits Gespeicherte.
Friction-Reports
Ein über die Relay gesendeter Friction-Report geht an /api/feedback, das ihn mit einem serverseitig gehaltenen Token als GitHub-Issue in onedot-digital-crew/onedot-devkit anlegt. Er wird sonst nirgends gespeichert — kein Blob, keine Datenbank, keine Kopie auf dem Server über die Anfrage hinaus.