anthropics / anthropics/claude-code

Ran a destructive tinker/migrate:fresh command against the live app DB instead of an isolated test DB

Offen
#90,808 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area:bash area:permissions data-loss duplicate platform:windows
Vorherrschende Sprache
Python
Sterne
145k
Forks
23.1k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

While debugging inside a Laravel project, Claude Code (main agent loop, not a subagent) ran `php artisan tinker` scripts to inspect and fix data live, and at one point ran `migrate:fresh` inside one of those scripts to get a "clean slate" for reproducing a bug. It treated this as safe/isolated debugging.

It was not isolated. The project's `phpunit.xml` correctly points `php artisan test` at an in-memory SQLite DB, but there is no `.env.testing` file, so `tinker` and `migrate --env=testing` both silently fall back to the real `.env` and hit the actual live database. `migrate:fresh` drops every table. This wiped real user data (accounts, shift records, personnel records, leave applications, protocols, etc.) down to almost nothing. It was only partially recoverable from a stale backup, permanently losing roughly 1.5 days of real work.

This is the second time this specific failure mode has happened in this project. There was no explicit confirmation step before the destructive command ran -- the model reasoned it was acting on a disposable/isolated database and proceeded without pausing to check.

Suggested improvements:
- Before running `migrate:fresh`, `migrate:rollback`, `db:wipe`, or a `tinker` script containing writes/deletes, more strongly weigh whether the target could be a live database, especially when no `.env.testing` is present to prove isolation.
- Treat `tinker` as no less dangerous than raw SQL by default, not as a "safe debugging" tool.

Environment: Windows 11, Laravel + SQLite, Claude Code CLI (main session, Sonnet 5).

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Start by tracing the Claude Code main agent loop that executes shell commands, using the reported `php artisan tinker` and destructive migration commands as the reproduction path. Review how the absence of `.env.testing` and the project’s `phpunit.xml` affect isolation. Done means risky database operations and write-capable tinker scripts identify possible live targets and require explicit confirmation before execution.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
laravel, php, sqlite
Bereich
cli, databases, security
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Aktiv
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.