1 Punkte von GN⁺ 3 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • Claude Code 2.1.198 aktivierte standardmäßig eine Auto-Continue-Funktion, bei der das Modell die Arbeit nach eigenem Ermessen fortsetzt, wenn auf AskUserQuestion 60 Sekunden lang keine Antwort erfolgt. Zum Release wurde dies jedoch weder im Changelog noch in der Dokumentation vermerkt.
  • Berechtigungsanfragen wurden zwar nicht automatisch genehmigt, aber in Umgebungen mit bereits erlaubten Tools oder --dangerously-skip-permissions konnte die Funktion Entscheidungs-Gates wie „staging oder production“ faktisch anstelle des Nutzers passieren; selbst bei nur teilweise eingegebenen Antworten traf das Modell die restlichen Entscheidungen.
  • 2.1.200, das rund zwei Tage nach dem Bekanntwerden erschien, entfernte die Funktion nicht, sondern schaltete nur den Standardwert ab und stellte auf ein Opt-in-Modell über /config um, bei dem 60s, 5m, 10m oder never gewählt werden kann.
  • Im öffentlichen Repository fehlen zwar der echte Produktquellcode sowie die Einführungs- und Rollback-Commits, doch ein Vergleich der im npm-Bun-Binary enthaltenen JavaScript-Bundles zeigt, dass in 2.1.198 gleichzeitig AFK-Strings, Schema und Analyse-Events hinzugefügt wurden.
  • Wenn standardmäßige automatische Updates mit unvollständigen Änderungsprotokollen zusammenkommen, können sich Sicherheitsannahmen ohne Eingriff des Nutzers ändern. Wer die CLI fixieren und Plugins trotzdem aktualisieren will, muss DISABLE_AUTOUPDATER=1 und FORCE_AUTOUPDATE_PLUGINS=1 zusammen setzen.

2.1.198, das nach 60 Sekunden anstelle eines Menschen entschied

  • Claude Code 2.1.198, veröffentlicht am 1. Juli 2026, hob die Blockierung auf, wenn AskUserQuestion 60 Sekunden lang auf eine menschliche Antwort gewartet hatte, und wies das Modell an, auf Basis des Kontexts die beste Entscheidung zu treffen und fortzufahren.
    • In der Ausgabe erschien No response after 60s — continued without an answer.
    • Es gab zwar einen Hinweis, dass erneut gefragt werden könne, doch auch für die Rückfrage galt derselbe Timeout.
  • Wenn ein Nutzer nur einen Teil der Fragen beantwortet hatte und dann abwesend war, wurden die Eingaben nicht verworfen, sondern Teilantworten übermittelt.
    • Wenn bei drei Fragen nur die erste beantwortet wurde, lief die Arbeit mit dieser Antwort und den vom Modell gewählten restlichen Antworten weiter.
    • Je nach Antwortstatus wählte die Bildschirmmeldung continued with the answers selected so far oder continued without an answer.
  • Ganz ohne Countdown auf dem Bildschirm war das Verhalten nicht.
    • Bei jedem Tastendruck startete der Timer neu, und es erschien ein Hinweis wie auto-continue in 12s · any key to stay.
    • Da der Standardwert von CLAUDE_AFK_COUNTDOWN_MS jedoch 20 Sekunden betrug, wirkte es in den ersten 40 Sekunden wie eine normale blockierende Frage; die Warnung wurde nur in den letzten 20 Sekunden angezeigt.
    • Nutzer, die mehrere Agents in verschiedenen Tabs laufen ließen oder ihren Platz verlassen hatten, konnten die Warnung leicht übersehen.

Geltungsbereich und Grenzen der Sicherheits-Gates

  • Der Timeout galt nur für AskUserQuestion und war nicht mit Berechtigungs-Prompts wie Freigaben für Pläne oder Do you want to allow … verbunden.
    • Im Binary sind Countdown-Komponente und Timer-Hook nur an den Fragendialog gekoppelt.
    • Auch die Tool-Referenz stellt klar, dass Berechtigungs-Prompts im Leerlauf nicht automatisch aufgelöst werden.
  • In Ausführungsmodi, in denen Berechtigungs-Prompts von vornherein nicht erschienen, bot diese Trennung jedoch keinen Schutz.
    • Verwendbar waren bypassPermissions, acceptEdits, allowedTools, --dangerously-skip-permissions und der Hook PreToolUse.
    • Wenn Deployment-Befehle auf der Allowlist standen oder die Berechtigungsprüfung umgangen wurde, konnten Auswahlfragen in AskUserQuestion wie „staging oder production?“ oder „welche config?“ das letzte verbleibende Gate sein.
  • Der Timer vergab selbst keine Berechtigungen, konnte aber die eigentliche Auswahl bei bereits erlaubten Aktionen dem Modell überlassen.
  • Im Tool-Schema gibt es keinen timeout-Input, und das Modell konnte ihn auch weder setzen noch steuern.
    • Die Eingabeparameter sind nur questions, answers, annotations und metadata.
    • Übersprungen wurden Antworten nicht vom Modell, sondern vom Agent-Harness, das automatisch eine Antwort zurückgab.

Zeitlinie von Einführung und Rollback

  • Der bestätigte öffentliche Verlauf sieht wie folgt aus:
    • 2026-06-29: Release von 2.1.196, laut Einschätzung des Meldenden die letzte unauffällige Version.
    • 2026-06-30: Release von 2.1.197; im Changelog steht nur eine Zeile zum Release von Sonnet 5.
    • 2026-07-01: Release von 2.1.198 mit Auto-Continue.
    • 2026-07-02 02:54 UTC: Aleksey Nogin eröffnet Issue #73125.
    • 2026-07-02 03:45 UTC: In einem Kommentar wird CLAUDE_AFK_TIMEOUT_MS geteilt, bis dahin ein nicht öffentlich bekannter Ausweg.
    • 2026-07-02: Während das Issue noch offen ist, erscheint 2.1.199 mit 24 Punkten im Changelog; Auto-Continue wird weiterhin nicht erwähnt.
    • 2026-07-03: In 2.1.200 wird das Standardverhalten zurückgenommen.
    • 2026-07-04 18:04 UTC: Das Issue wird geschlossen.
  • Zum Issue gab es 384 👍 und 143 Kommentare; die gemeldete Umgebung war 2.1.198, Opus, AWS Bedrock und das VS-Code-Terminal.
  • Von der Problemmeldung bis zur Umstellung des Standardwerts vergingen rund zwei Tage.

So korrigierte 2.1.200 das Verhalten

  • 2.1.200 entfernte die Funktion nicht, sondern schaltete Auto-Continue standardmäßig aus und machte es zu einem Opt-in über /config.
  • Vor der Korrektur gab es in 2.1.198 keine /config-Einstellung askUserQuestionTimeout; wer dem Verhalten entgehen wollte, musste eine in den Release-Unterlagen nicht erwähnte Umgebungsvariable verwenden.
  • Auch in 2.1.211 bleibt die gesamte Implementierung erhalten.
    • Der Name des /config-Eintrags lautet Question auto-continue timeout.
    • Zulässige Werte sind 60s, 5m, 10m und never.
    • Ohne gesetzten Wert wird never verwendet und die Funktion bleibt deaktiviert.
    • Der interne Standard-Timeout beträgt weiterhin 60.000 ms, die Countdown-Schwelle 20.000 ms.
    • CLAUDE_AFK_TIMEOUT_MS und CLAUDE_AFK_COUNTDOWN_MS können den Konfigurationswert überschreiben.
  • Die Korrektur löschte den Timer nicht, sondern fügte nur eine zusätzliche Gate-Bedingung hinzu, sodass er nur bei vorhandenem Konfigurationswert oder gesetzter Umgebungsvariable aktiv wird.
  • Nutzer, die auf eine betroffene Version festgelegt waren, konnten das Verhalten vorübergehend umgehen, indem sie in settings.json für CLAUDE_AFK_TIMEOUT_MS einen sehr großen Wert setzten.

Einführung einer Funktion, die im Changelog fehlte

  • Die Release Notes wurden mit identischem Inhalt im offiziellen Changelog und im CHANGELOG.md des Repositories veröffentlicht.
  • Betrachtet man die damaligen Einträge anhand fixierter Commits, taucht die Hinzufügung von Auto-Continue in keiner Version auf.
    • 2.1.197: eine Zeile zum Release von Sonnet 5
    • 2.1.198: rund 30 Einträge, aber kein Auto-Continue
    • 2.1.199: auch nicht in den 24 Einträgen, die nach Eröffnung des Issues veröffentlicht wurden
  • AskUserQuestion war ein Tool, das üblicherweise im Changelog vermerkt wurde und seit 2.0.55 in 13 Versionen insgesamt 15 Mal auftauchte.
    • Im Abschnitt mit den Änderungen, also von 2.1.181 bis vor 2.1.200, erschien es jedoch kein einziges Mal.
    • Von den zwei Verhaltensänderungen, Einschalten und Ausschalten, wurde nur das Ausschalten dokumentiert.
  • Der einzige Eintrag, der Auto-Continue erstmals dokumentierte, war in 2.1.200 die Formulierung, dass es „standardmäßig nicht mehr automatisch fortfährt und per /config opt-in ist“.
  • CLAUDE_AFK_TIMEOUT_MS tauchte weder im Changelog noch in der README auf.

Nach dem Rollback hinzugefügte Dokumentation

  • Die aktuelle Umgebungsvariablen-Referenz dokumentiert die beiden AFK-Umgebungsvariablen und nennt ausdrücklich, dass in 2.1.198 und 2.1.199 standardmäßig 60 Sekunden Auto-Continue aktiviert war.
  • Dieses Dokument kann nicht den Stand vom Releasetag wiedergeben.
    • Das dort aktuell erwähnte askUserQuestionTimeout existiert in der ausführbaren Datei von 2.1.198 nicht.
    • In den Wayback-Machine-Snapshots vom 23. Juni sowie vom 1. Juli um 12:11 und 21:35 UTC kamen CLAUDE_AFK und AskUserQuestion jeweils 0 Mal vor.
    • Der Vergleichseintrag DISABLE_AUTOUPDATER erschien in allen Snapshots 2 Mal, es handelte sich also nicht um eine Auslassung durch fehlerhaftes Erfassen der Seite.
  • 2.1.198 wurde am 1. Juli um 16:50:16 UTC auf npm veröffentlicht, doch selbst in der Dokumentation 4 Stunden und 45 Minuten später fehlten AFK, Auto-Continue, das Fragentool und der Countdown.
  • Die betreffenden Formulierungen wurden zwischen dem 1. Juli 21:35 und dem 5. Juli 13:58 hinzugefügt; in diesem Zeitraum lag auch der Rollback von 2.1.200.
  • Die neue Dokumentation erfasste nur den Zustand nach dem Fix, in dem die Funktion bereits „standardmäßig deaktiviert“ war; wann das tatsächliche Standardverhalten vom 1. bis 2. Juli dokumentiert wurde, ist nicht belegt.

Produktquellcode und Commits, die nicht im öffentlichen Repository liegen

  • Es gibt weder einen öffentlichen Commit, der die Funktion einführte, noch einen öffentlichen Commit, der sie zurücknahm.
  • Im öffentlichen Git-Verlauf blieben nur zwei automatische Commits, die Changelog und feed.xml aktualisierten.
    • 75709ea: Veröffentlichung der Release Notes für 2.1.198
    • 1322e9b: Veröffentlichung der Release Notes für 2.1.200
  • Das Repository anthropics/claude-code enthält 216 verfolgte Dateien, davon 104 Markdown-Dateien, aber keinen tatsächlichen Quellcode des ausgelieferten Produkts.
    • Die ausführbaren Dateien sind Beispiel- oder Skripte zur Automatisierung des Issue-Trackings.
    • Auch plugins/ und examples/ enthalten nur Beispiel-Plugins, Terraform-Konfigurationen für ein GCP-Gateway, MDM-Profile usw.
  • Der Unterschied zwischen den Tags 2.1.197 und 2.1.198 besteht nur aus CHANGELOG.md und dem davon ins RSS wiederholten feed.xml.
    • Auch bei zehn aufeinanderfolgenden Releases von 2.1.196 bis 2.1.206 änderten sich nur diese beiden Dateien.
    • Die Tags sind keine Source-Releases, sondern faktisch Release-Notes-Tags.
  • Weder über Changelog noch über Repository- oder Tag-Vergleiche lässt sich das tatsächliche Verhalten der ausgelieferten Version verifizieren; der geschriebene Quellcode bleibt unveröffentlicht und wird nur als kompilierte Binärdatei ausgeliefert.

Spuren einer absichtlich entworfenen und instrumentierten Funktion

  • Es gibt keine offizielle Design-Dokumentation, keinen PR und keine Changelog-Formulierung, aus denen sich der Grund für die Einführung belegen ließe.
  • Name und Meldung sind jedoch Indizien, dass damit eine Situation adressiert wurde, in der parallele Agenten wegen einer abwesenden Person unbegrenzt blockiert werden.
    • Der interne Name AFK bedeutet away from keyboard.
    • Die Meldung geht davon aus, dass „der Nutzer möglicherweise nicht an der Tastatur ist“.
    • Teilnehmer des Issues erklärten, sie nutzten Workflows, in denen Dutzende Agenten über Tage auf eine menschliche Antwort warten.
  • In 2.1.198 wurde dem Ergebnis-Schema des Tools das Feld afkTimeoutMs hinzugefügt, das angibt, ob automatisch aufgelöst wurde.
    • Im Pfad mit menschlicher Antwort fehlt es, bei automatischer Auflösung protokolliert es die Idle-Zeit.
    • Es dient dazu, dem Modell mitzuteilen, dass die Antwort automatisch aufgelöst wurde, und passende Komponenten für die Terminalausgabe auszuwählen.
  • In derselben Version wurde auch das Analyse-Event tengu_ask_user_question_afk_auto_advance hinzugefügt.
    • Es übermittelt timeoutMs, die Anzahl der Fragen, ob es sich um den Plan-Modus handelt und ob Teilantworten vorlagen.
    • Der eigentliche Fragetext wird nicht gesendet; stattdessen werden source_hash und Zähler verwendet.
  • Dass hadPartialAnswers separat instrumentiert wurde, zeigt, dass auch der Pfad für Teilantworten eigenen Code und eigene Messung hatte.
  • Da Verhalten, Countdown-UI, Schema-Feld und Analyse-Event gemeinsam in einer Version eingeführt wurden, handelte es sich nicht um eine versehentliche Ein-Zeilen-Änderung, sondern um eine Funktion mit Messsystem.
  • Aus diesen Belegen allein lässt sich jedoch nicht erkennen, wer sie geschrieben, geprüft, freigegeben oder gemergt hat oder an welcher Stelle Menschen eingegriffen haben.

Closed Source, aber lesbare Bun-Binärdatei

  • Das installierte Claude Code ist eine etwa 250 MB große native Binärdatei ohne entfernte Symbole.
  • Das Single-Executable-Format von Bun hängt den Modulgraphen hinter die Runtime; auch in der Claude-Code-Binärdatei findet sich die Markierung ---- Bun! ----.
  • Da Bun das JavaScript-Bundle in die Binärdatei einbettet, lassen sich mit strings Konfigurationsnamen, Meldungen, Analyse-Events usw. auslesen.
  • Das lokale Installationsverzeichnis enthält nur einige neuere Versionen, auf npm liegen jedoch die plattformspezifischen Binärdateien jeder Version vor.
    • @anthropic-ai/claude-code ist ein etwa 152 KB großer Installations-Stub.
    • Das eigentliche Paket 2.1.198 für Linux x64 ist etwa 249 MB groß.
  • Der öffentliche Quellcode fehlt zwar, doch weil sich die Release-Artefakte jeder Version herunterladen und das ausgelieferte Verhalten überprüfen lassen, ist es keine vollständige Blackbox.

Vergleich der Binärdateien 2.1.197 und 2.1.198

  • Die Suche nach AFK-bezogenen Strings in beiden Binärdateien zeigt eine klare Grenze
    • 2.1.197: away from keyboard, CLAUDE_AFK_TIMEOUT_MS und CLAUDE_AFK_COUNTDOWN_MS kommen alle 0-mal vor
    • 2.1.198: erscheinen jeweils 2-mal, 3-mal und 3-mal
  • Nach der Korrektur wurde im Timer-Gate von 2.1.211 die Bedingung ergänzt, dass ein /config-Wert oder eine Umgebungsvariable vorhanden sein muss
    • Auch in 2.1.198 gab es bereits ein Gate, das etwa prüfte, ob eine konkurrierende externe Ausführung läuft
    • Allerdings gab es keine Bedingung, die der Nutzer deaktivieren konnte, und die Korrektur bestand hier in der Form nur aus einer zusätzlichen &&-Bedingung
  • Ohne den Funktionsnamen und die betroffene Versionsnummer zu kennen, ist es deutlich schwieriger, gewöhnliche Releases zu vergleichen
    • Bei einem einfachen Vergleich auf Basis von strings -n 8 unterscheiden sich 21.903 Strings
    • Je nach minimaler String-Länge kann sich das auf 81.289 oder 29.910 ändern; 21.903 ist also keine feste Eigenschaft dieses Releases
    • Bei jedem Build benennt der Minifier Bezeichner um, sodass das meiste nur Rauschen und keine echte Funktionsänderung ist
  • Filtert man unter den hinzugefügten Strings nur englische Sätze heraus, die mit einem Großbuchstaben beginnen, wie normale Sätze aussehen und mindestens 5 Wörter haben, bleibt nur noch 156 Zeilen übrig
    • Darunter ist Before going idle the user had selected: enthalten
    • Da dies ein String ist, der in die Unterhaltung eingefügt wird, wenn der Dialog anstelle eines Menschen antwortet, war das auch ohne Vorwissen eine Änderung, bei der man die Prüfung hätte stoppen sollen
  • Mit curl, strings und diff ließ sich das in etwa 5 Minuten finden, aber von Nutzern zu erwarten, jede Auto-Update-Version binär zu untersuchen, kann Changelogs nicht ersetzen

Sicherheitsproblem größer als die Kosten

  • Wenn automatisch der falsche Pfad gewählt wird, kann das unnötige Tokens verbrauchen
  • Das größere Problem ist, dass Hooks und Regeln, die AskUserQuestion als blockierendes Sicherheits-Gate voraussetzen, zu einem 60-Sekunden-Countdown werden
  • Claude Code wird auch in riskanten Umgebungen verwendet, etwa bei Deployments, Infrastruktur und produktionsnahen Skripten
  • Da Claude Code standardmäßig automatisch aktualisiert wird, können sich in Kombination mit stillen Verhaltensänderungen bestehende Sicherheitsannahmen der Nutzer ändern, ohne dass sie irgendetwas tun
  • Die Diskussion, dass schon die Politik, stets sofort die neueste Version zu erhalten, eine riskante Entscheidung sein kann, knüpft an On Cooldowns and Dependabot Tuning an

So deaktiviert man Auto-Updates und die Priorität

  • Ob Updates deaktiviert werden, wird über die folgenden Umgebungsvariablen in dieser Reihenfolge geprüft; der erste Treffer gilt
    • DISABLE_UPDATES=1: blockiert alle Update-Pfade einschließlich manueller claude update-Aufrufe
    • DISABLE_AUTOUPDATER=1: stoppt nur Hintergrundprüfungen, erlaubt aber manuelle Updates und hat Vorrang vor der Einstellung autoUpdates
    • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1: stoppt zusammen Auto-Updates, Feedback-Befehle, Fehlerberichte und Telemetrie
  • Legt man dies statt ins Shell-Profil in den env-Block von ~/.claude/settings.json, gilt es für alle Sitzungen einschließlich CI, cron, systemd und IDE-Terminals
{
  "env": {
    "DISABLE_AUTOUPDATER": "1"
  }
}
  • Der Geltungsbereich der Einstellungen wird in dieser Reihenfolge stärker: Shell-Profil, benutzerspezifische ~/.claude/settings.json, repository-spezifische .claude/settings.json, zentrales managed-settings.json
  • Die Pfade für managed-settings.json sind wie folgt
    • macOS: /Library/Application Support/ClaudeCode/managed-settings.json
    • Linux/WSL: /etc/claude-code/managed-settings.json
    • Windows: C:\Program Files\ClaudeCode\managed-settings.json
    • Der frühere Pfad C:\ProgramData\ClaudeCode wird nicht mehr gelesen
  • Es gibt kein CLI-Flag zum Deaktivieren von Auto-Updates; /doctor zeigt Installationstyp und Update-Kanal an

Wenn CLI-Updates deaktiviert werden, stoppen auch Plugins

  • Wird der Auto-Updater auf irgendeine Weise deaktiviert, etwa über eine Umgebungsvariable oder autoUpdates: false, dann werden auch automatische Plugin-Updates gestoppt
  • Die Dokumentation zur Plugin-Erkundung erklärt, dass man mit DISABLE_AUTOUPDATER zusammen mit FORCE_AUTOUPDATE_PLUGINS=1 die CLI fixieren und Plugins weiter aktualisieren kann
  • Dagegen fehlen in der eigentlichen /setup-Dokumentation zum Deaktivieren automatischer Updates und in der Tabelle der Konfigurations-Umgebungsvariablen sowohl die Auswirkungen auf Plugins als auch FORCE_AUTOUPDATE_PLUGINS
  • In der Binärdatei gibt es vier Pfade, die Plugin-Updates stoppen
    • DISABLE_UPDATES
    • DISABLE_AUTOUPDATER
    • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
    • autoUpdates: false
  • Zur Laufzeit bleibt statt einer Warnung, dass Plugins gestoppt wurden, nur der Debug-Log Plugin autoupdate: skipped (auto-updater disabled)
  • Eine Konfiguration, die die CLI fixiert und Plugins beibehält, sieht so aus
{
  "env": {
    "DISABLE_AUTOUPDATER": "1",
    "FORCE_AUTOUPDATE_PLUGINS": "1"
  }
}
  • FORCE_AUTOUPDATE_PLUGINS, DISABLE_AUTOUPDATER und DISABLE_UPDATES interpretieren 1, true, yes und on ohne Beachtung der Groß-/Kleinschreibung als wahr und 0 als falsch
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC prüft nicht den Wert, sondern nur die Existenz; auch =0 aktiviert es, wodurch sowohl der Auto-Updater als auch Plugin-Updates stoppen

Weitere Fallstricke bei den Update-Einstellungen

  • Auch wenn CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC aus Datenschutzgründen oder zur Einschränkung externer Kommunikation verwendet wird, werden CLI und Plugins gemeinsam fixiert
  • Das undokumentierte autoUpdates: false kann bei nativen Installationen ignoriert werden, wenn autoUpdatesProtectedForNative aktiviert ist
    • Umgebungsvariablen werden vor dieser Einstellung geprüft und ohne Bedingung angewendet
  • 2.1.98 behebt ein Problem bei npm-Installationen, bei dem DISABLE_AUTOUPDATER die Prüfung der Registry-Version und das Ändern symbolischer Links nicht vollständig blockierte
  • Behoben wurde auch ein Problem, bei dem der Auto-Updater benutzerdefinierte Launcher oder symbolische Links unter ~/.local/bin/claude bei jedem Release überschrieb; aktuell zeigt /doctor extern verwaltete Launcher an
  • Native und npm-Installationen aktualisieren sich standardmäßig selbst
    • Homebrew, WinGet, apt, dnf und apk sind standardmäßig keine Ziele der Selbstaktualisierung
    • Homebrew und WinGet können mit CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE=1 per Opt-in aktiviert werden

Verbleibendes Vertrauensproblem im Rollout-Prozess

  • Wenn ein Mensch mehrere Agenten gleichzeitig überwacht, ist es schwer, alle Fragen innerhalb von 60 Sekunden zu prüfen, und auch wie viele Tokens oder wie viel Arbeit nach einer falschen Auswahl verbraucht werden, ist vorab nicht bekannt
  • Aus öffentlichen Unterlagen lässt sich nicht nachvollziehen, welche Personen und Prozesse Anthropic beim Schreiben, Prüfen, Freigeben, Mergen, Dokumentieren und Vergleichen von Releases dieser Funktion durchlaufen hat
  • Die Funktion wurde in ungefähr zwei Tagen in eine angemessene Opt-in-Form korrigiert, doch tägliche Release-Zyklen und standardmäßige Auto-Updates zeigen, dass unerwartete Funktionen ohne Changelog ausgerollt werden können
  • Die Analyse von Binärdateien ist ein wirksamer Umweg, um den tatsächlich ausgelieferten Inhalt zu verifizieren, kann aber präzise und gut redigierte Changelogs nicht ersetzen
  • Es gibt keinen Grund, von böser Absicht auszugehen; ob sich dieselbe Art von Vorfall wiederholt, ist der Maßstab dafür, was in diesem Rollout-Prozess verbessert wurde

1 Kommentare

 
GN⁺ 3 시간 전
Hacker-News-Kommentare
  • Ich bin Thariq aus dem Claude-Code-Team und habe AskUserQuestion entwickelt. Als die Modelle leistungsfähiger wurden, bekamen wir das Feedback, dass lang laufende Aufgaben an frühen Rückfragen hängen bleiben, und haben deshalb etwas geändert, um das zu beheben. Das erreichte aber nicht den Qualitätsmaßstab, den wir erwarten, und entsprach auch nicht der normalen Art, wie Claude Code veröffentlicht wird.
    Selbst wenn die interne Bewertung gut war, hätten wir es von Anfang an nur als Opt-in anbieten und im Changelog festhalten müssen. AskUserQuestion war nicht als Sicherheitsmechanismus gedacht, aber ich verstehe, dass es sich für einige Nutzer genau so etabliert hat. Wir werden andere Wege suchen, das Gleichgewicht zwischen lang laufenden Aufgaben und Nutzereingaben herzustellen, und aus diesem Rollout lernen.

    • Statt eines einmaligen Fixes braucht es granulare Berechtigungseinstellungen. Zwischen „für jede Aktion eine Freigabe einholen“ und gefährlicher Vollautomatik sollte man Einschränkungen wie „führe es bis zum Abschluss aus, aber rufe nicht das Web ab, ändere keine Dateien außerhalb der Codebasis und lösche nichts“ leicht festlegen können.
    • Es ist mir tatsächlich oft passiert, dass ich weg war in der Erwartung, es laufe stundenlang durch, und Claude dann schon an einer frühen Frage hängen blieb und so Implementierungszeit verschwendete. Andererseits ist AskUserQuestion bequemer zu beantworten als normale Textfragen, so nützlich sogar, dass ich Claude absichtlich bitte, es zu verwenden. Danke auch für die Haltung, Fehler einzugestehen und Verantwortung zu übernehmen.
    • ApprovIQ ist für Produkt-Releases zentral auf Claude Code angewiesen, aber bei Anthropic spürt man eine Asymmetrie, als sei dieses Tool für sie nicht so wichtig wie für die Nutzer. Es ist ein Produkt, das die Karrieren vieler Menschen beeinflusst, daher untergräbt es eher das Vertrauen, wenn nur individuelle Verantwortung im Sinn von „das war meine Änderung“ betont wird.
      Von einem Unternehmen in der Größenordnung von Anthropic sollte man erwarten, dass es nicht Einzelpersonen, sondern das Versagen von PR- und Organisationsprozessen anerkennt und behebt, die so einen Rollout zugelassen haben.
    • Dass in einem führenden Unternehmen im Milliardenbereich öffentlich mit „das war meine Änderung“ und „das blieb unter unserem Maßstab“ um Entschuldigung gebeten wird, wirkt menschlich, aber nicht strategisch und könnte die Firma schwach erscheinen lassen. Verglichen mit Apple oder Google auf dem Höhepunkt wäre das wohl auch dem Bild technischer Exzellenz nicht zuträglich gewesen; auch öffentlich Verantwortung zu übernehmen ist eine Frage von Zeitpunkt, Ort und Art.
      Ich frage mich, ob diese Transparenz ein neuer Trend des Internetzeitalters ist oder ob sich die Kultur von Tech-Unternehmen verändert.
    • Bei diesem hohen Entwicklungstempo ist Ausgewogenheit schwer, daher wären mehrere Release-Kanäle wie bei Chrome sinnvoll. Eine stabile Version mit seltenen Updates, eine Beta für solche Funktionen zuerst und bei Bedarf sogar ein Canary-Kanal würden jedem erlauben, entsprechend seiner Risikobereitschaft zu wählen.
  • Besonders frustrierend ist die Formulierung „Nicht alle Funktionen erscheinen zwingend im Changelog“ und dass Anthropic nicht erklärt, warum das Changelog nicht mehr als vollständige Historie gepflegt wird. Man weiß nicht, was sonst noch heimlich ausgerollt wird (1).
    Das Einzige, was Boris Cherny in der betreffenden Diskussion getan hat, war, „extreme danger“ aus dem Titel des GitHub-Issues zu entfernen (2). Immerhin hat Anthropic eine Option hinzugefügt und standardmäßig deaktiviert, aber OpenAI hält weiter daran fest, dass das 60-Sekunden-Timeout nicht abschaltbar ist (3). Allerdings ist das Ausführungstool von Codex stärker Open Source, sodass Nutzer es selbst forken und Optionen hinzufügen können.

    • Jedes Mal, wenn ein neues Modell ausgerollt wird, fühlt es sich an, als würden die alten Modelle langsamer oder stumpfer. Das könnte an Ressourcenallokation oder Quantisierung liegen, sicher sagen lässt es sich aber nicht, und man muss sich an modellabhängige Workflows gewöhnen und bei Problemen mit Opus 4.8 oder Sonnet 5 jedes Mal neu nachjustieren.
    • Anscheinend ist Codieren jetzt gelöst, und wer eigene Entscheidungen treffen will, gilt wohl als Dinosaurier.
  • Ich würde keinem Ausführungstool trauen, das von einer Firma stammt, die nach dem Ende der Subventionierung der Token-Kosten auch noch Rechenkosten abrechnet. Im Moment sind die Interessen noch deckungsgleich, aber in dem Moment, in dem mehr Tokens direkt mehr Gewinn bedeuten, sind die Fehlanreize zu groß.
    Am Ende werden wahrscheinlich Open-Source-Ausführungstools gewinnen, daher sollten Unternehmen besser selbst Open Source gehen.

    • Wenn man einen Open-Source-Coding-Agent nutzt, ist auch ein OpenAI-Abo für 20 Dollar im Monat eine brauchbare Alternative. Es gibt Nutzungslimits, aber der Preis ist nicht schlecht.
    • Es wäre wohl auch leicht, implizite Token-Erhöhungen auszurollen, etwa indem man im Backend die Chain-of-Thought-(CoT)-Einstellungen hochsetzt.
  • Kürzlich habe ich mit der Maus geklickt, um den Fokus auf das Terminalfenster zu setzen, und Claude Code hat das als Klick auf eine Auswahl interpretiert, was ziemlich unerquicklich war.

    • Auch das Verhalten beim Kopieren und Einfügen wurde plötzlich geändert, wodurch Text kopieren sehr unbequem geworden ist. Niemand will Software, bei der sich mit täglichen Updates das Kernverhalten ständig ändert; wenn man Nutzern per Vibe-Coding herausgepumpte Features aufzwingt, bekommt man genau solche Gegenreaktionen.
    • Ein Terminal ist keine Umgebung, in der man anklickbare Buttons erwartet; das ist sehr unpraktisch und senkt die Produktivität.
    • Wenn ich eine mausbasierte App gewollt hätte, hätte ich eine GUI benutzt. Warum man diese Erfahrung unbedingt in einer Textumgebung nachbilden will, ist schwer nachvollziehbar.
    • Es wurde zwar zuerst gefragt, ob ich opt-in möchte, aber ich habe es versehentlich aktiviert und es war extrem störend. Ich klicke immer, um dem Terminal den Fokus zu geben, und jetzt werden dabei tatsächlich Aktionen ausgelöst.
    • Die neue Vollbild-UI ist sehr schlecht. Die frühere Scroll-Methode funktionierte bei längerer Nutzung zwar auch fehlerhaft, aber man konnte nach einem Neustart zumindest weitermachen.
  • Das habe ich heute selbst erlebt. Während ich die Antwort des Agenten las, erschien eine Frage, und noch bevor ich sie überhaupt lesen konnte, wurde automatisch irgendetwas ausgewählt. Ich weiß wirklich nicht, wo die Softwareentwicklung hingekommen ist.

    • Mein Klick, um das Terminalfenster zu fokussieren, lag an einer ganz anderen Stelle als die Frage und wurde trotzdem als Zustimmung gewertet, sodass ich den TUI-Modus abschalten musste. Ich hatte den Automatikmodus nicht einmal eingeschaltet, aber er war aktiv und genehmigte Shell-Befehle, die ich nicht wollte.
      Ich habe sogar gesehen, wie bei terraform apply ein Auto-Approve-Flag angehängt wurde, was sehr gefährlich ist.
  • Ich verstehe nicht, warum Claude Code offenbar eine ziemlich schwere virtuelle Maschine auf dem Computer einrichtet, aber standardmäßig trotzdem keinerlei Sandbox-Isolation bietet. Aktuelle Modelle verändern den Computer aggressiv; ich bat nur darum, Frontend-UI-Code zu debuggen, und trotzdem begann es, Linux-Systemdateien umzuschreiben, auf die mit Benutzerrechten zugegriffen werden kann.
    Nachdem ich es in eine Sandbox gepackt hatte, zeigte sich erst, wie oft es aus trivialen Gründen versucht, die Grenzen zu verlassen, und das ist ein weiterer Grund, OpenCode und lokale LLMs zu nutzen.

    • Im Ausführungstool von Claude Code gibt es viele seltsame Designentscheidungen, daher könnte OpenCode langfristig die bessere Wahl sein.
  • Viele Reaktionen deuten es als böswillig, aber tatsächlich wirkt es eher so, als habe das Entwicklerteam eine Funktion gebaut, die es selbst benutzen wollte. Wenn man eine Claude-Session laufen lässt, zurückkommt und feststellt, dass wegen einer einzigen Frage gar nichts passiert ist, ist das in der Praxis extrem frustrierend
    Man sollte aber auch nicht glauben, dass allein Claudes Fragen der einzige Schutz vor einer Katastrophe sind. Sicherheitsgrenzen müssen bei den von außen vergebenen Berechtigungen gesetzt werden, nicht durch Claudes internes Urteil. Andererseits stehen in diesem Text Sätze wie „Which cuts less far than it looks.“; wahrscheinlich hätte Claude dazu auch nicht nachgefragt und angehalten

    • Die Prosa des Artikels wurde direkt geschrieben, und Claude hat nur die Recherche übernommen; das wurde auch klar gekennzeichnet. Claudes Recherchen blieben als Aufzählungspunkte stehen und gaben den Lesern einen Ausgangspunkt für weitere Nachforschungen
      Aus demselben Grund, aus dem man ein LLM nicht Kreuzworträtsel lösen lässt, wird von LLM geschriebene Prosa, die den Spaß verschwinden lässt, nicht veröffentlicht
    • Wenn das Entwicklerteam selbst eine Funktion gebaut hat, die es selbst benutzen will, ist das eher noch schlimmer
    • Dass die Funktion nützlich ist, und dass sie ohne dokumentierte Deaktivierungsmöglichkeit für alle standardmäßig aktiviert wird, sind völlig verschiedene Fragen. Als dokumentierte Opt-in-Funktion wäre das gut gewesen, aber der tatsächliche Rollout war nicht so, und das Claude-Code-Team und seine Prozesse haben eindeutig versagt
      Ich halte es nicht für böswillig, aber für leichtsinnig und nachlässig, und selbst wenn Ähnliches wieder passiert, wirkt es nicht so, als würde das Team daraus lernen. Claude Code ist kein stabiles und verlässliches Tool, sondern eher ein Experiment an der Spitze des Machbaren; das ist der Preis, den man zahlt, wenn man es statt anderer Ausführungswerkzeuge wählt
    • Ich verstehe nicht, wie man eine Funktion an Hunderttausende ausrollen kann, ohne auch nur zu prüfen, welche Art von Fragen Claude den Nutzern stellt. Superpowers, das meistgenutzte Plugin im offiziellen Plugin-Markt, fragt schon im ersten Schritt mehrfach nach den Produktanforderungen, also darf man das nicht überspringen
      Es gab nicht einmal einen Parameter, mit dem Claude die Schwere der Frage oder die erwartete Antwortzeit anzeigen könnte, und das Zeitlimit betrug lediglich 60 Sekunden. Noch bevor man auf dem zweiten Monitor die Dokumentation nachsehen und zurückkehren konnte, wurde die Frage übersprungen; 60 Sekunden reichen nicht einmal, um den Kontext der Frage zu lesen
      Auch wenn keine böse Absicht dahintersteckt, zeigt das eine große Lücke im Urteilsvermögen bei der Überführung einer Idee in einen tatsächlichen Rollout
  • Früher kam eine ähnliche Funktion auch in das Codex-Plugin für VS Code und wurde dann schnell wieder entfernt. Es kommt oft vor, dass LLMs verschiedener Anbieter zu ähnlichen Ideen und Verzerrungen konvergieren; ich frage mich, ob ein LLM denselben Vorschlag auch den Produktmanagern oder Verantwortlichen von Claude gemacht haben könnte

  • AskUserQuestion ist kein Mechanismus zur Rechtefreigabe, daher wirkt es als Standardverhalten okay. Eine separate Warnfunktion könnte nötig sein, aber wenn das Modell gut genug wird, ist es für die Verwaltung vieler Agenten auch einfacher, wenn es selbst auswählt und fortfährt und der Nutzer anschließend korrigiert

  • Dass Anthropic das Verhalten von Claude Code vollständig ändern kann, ist einer der Gründe, warum der Pi Coding Agent entstanden ist. Wenn Nutzer viel Zeit investieren, um auf einem Produkt ihren Arbeitsablauf aufzubauen, ist Konsistenz sehr wichtig