Сборка · 23 мин · обновлено 21 июля 2026 г.

ИИ удалил базу данных: что делать, playbook на 7 минут 2026

Агент снёс базу, файлы или прод за секунды. Первые 7 минут решают, вернёшь ты данные или потеряешь навсегда. Пошаговый playbook: сначала останови агента, потом зафиксируй ошибку, потом восстанавливай через git reflog, PITR, Time Machine и lsof.

ИИ удалил базу данных: что делать, playbook на 7 минут 2026

ИИ-агент только что снёс твою базу, файлы или весь прод. Первые семь минут решают, вернёшь ты данные или потеряешь навсегда. Порядок жёсткий: сначала остановить агента, потом зафиксировать, что именно удалено, и только потом восстанавливать. Без паники, строго по чек-листу, потому что одно лишнее движение перезапишет то, что ещё можно вытащить.

Ниже - конкретные команды на каждую минуту. Что нажать, куда посмотреть, чем вернуть код из git, базу из бэкапа, файлы с диска. И семь правил в конце, чтобы это больше никогда не повторилось. Сохрани страницу в закладки прямо сейчас, в момент катастрофы читать вдумчиво уже некогда.

Агент удалил данные - действуй по порядку. Первая минута: `Ctrl+C`, не перезагружай ноутбук, не закрывай процессы, включи запись экрана. Минуты 2-3: в новом терминале сними `git status` и скопируй `~/.claude/projects/`. Минута 4: `git reflog --all` плюс `git reset --hard HEAD@{N}` возвращают код почти всегда. Минута 5: база - через PITR или снапшот в новый инстанс. Минута 6: файлы - Time Machine на Mac, `lsof | grep deleted` на Linux. Минута 7: нет бэкапа - техподдержка провайдера, S3-версии, `claude-file-recovery`.

STOP минута 1

  • Ctrl+C, не перезагружай ноутбук
  • не закрывай открытые процессы
  • включи запись экрана
1

Зафиксируй минуты 2-3

  • в новом терминале git status
  • скопируй ~/.claude/projects/
  • убей процессы через kill -TERM
2

Код из git минута 4

  • git reflog --all
  • git reset --hard HEAD@{N}
  • git fsck --lost-found в запасе
3

База минута 5

  • PITR или последний снапшот
  • всегда в новый инстанс
  • не поверх живой базы
4

Файлы минута 6

  • Time Machine на Mac
  • lsof | grep deleted на Linux
  • снапшот раздела через dd
5

Нет бэкапа минута 7

  • техподдержка провайдера
  • S3-версионирование
  • claude-file-recovery из JSONL
6

Что делать в первую минуту: STOP и не паникуй

Закрой терминал с агентом командой Ctrl+C. Ноутбук при этом не выключай и систему не перезагружай. Удалённые файлы и базы физически всё ещё лежат на диске - они просто помечены как «свободные блоки», и любая новая запись может перезаписать их насовсем.

Активные процессы тоже не трогай. Если процесс держал удалённый файл открытым, через lsof его потом можно вытащить. Закроешь процесс - потеряешь этот шанс. Первая минута решает примерно 70% успеха всего восстановления.

Показательный случай был весной 2026 года. Агент в редакторе кода за девять секунд удалил продакшен-базу стартапа вместе со всеми резервными копиями. Через минуту он сам написал в чате:

Я предположил, что удаление staging-тома через API будет ограничено только staging. Никогда не угадывай - и именно это я сделал.

- из переписки с агентом, апрель 2026, по материалам The Register

Когда это случается у тебя, первое действие - остановить агента. Не откатывать его же руками, не давать команду «восстанови всё назад», не запускать новые промпты. Каждое следующее действие агента может перезаписать дисковые блоки, в которых ещё лежат твои данные.

Вот что делаешь в первую минуту, по пунктам:

Дальше шесть минут на восстановление. Поехали.

Самая частая ошибка в панике - сказать агенту «верни всё как было». Он начнёт писать на диск и добьёт данные, которые ещё лежали свободными блоками. Агент, который только что удалил базу, не тот, кто её восстановит. Сначала останови его, потом действуй руками.

Минуты 2-3: зафиксируй ошибку точно

До восстановления - диагностика. Без точного понимания, что именно удалено, кем, когда и какими командами, ты будешь восстанавливать вслепую и рискуешь убить те данные, которые ещё живы. Открой новое окно терминала (не то, где сидит агент) и выполни три команды по очереди.

Первое - зафиксируй, что изменилось в git-репозитории:

git status
git log --since="30 minutes ago" --all --oneline

Если git показывает удалённые файлы как deleted, они ещё в индексе и возвращаются одной командой git restore .. Если коммит уже сделан - тоже нормально, идём дальше.

Второе - проверь, какие процессы агента работают:

ps aux | grep -i claude
ps aux | grep -i cursor

Видишь активные процессы - убей их через kill -TERM PID. Именно -TERM, а не -9, чтобы агент успел корректно закрыть файловые дескрипторы. С -9 можно потерять как раз тот открытый удалённый файл.

Третье - сохрани лог сессии агента. Claude Code хранит JSONL-сессии в ~/.claude/projects/, Cursor - в ~/.cursor/. Сделай копию прямо сейчас:

cp -r ~/.claude/projects ~/claude-projects-backup-$(date +%Y%m%d-%H%M%S)

Эта папка содержит дословный разговор с агентом: какие команды он запускал, что отвечал, в каком порядке. Это твой главный источник для разбора инцидента и, потенциально, для восстановления удалённых файлов из его памяти (см. последнюю минуту).

Папка `~/.claude/projects/` - это дословный лог всех сессий агента в формате JSONL. Кроме разбора инцидента она полезна тем, что агент видел содержимое файлов, пока с ними работал. Из этого контекста потом можно реконструировать удалённое, даже если ни git, ни бэкапа уже нет.

Минута 4: git reflog - твой главный шанс

Большинство случаев «ИИ удалил мой код» закрываются двумя командами: git reflog плюс git reset --hard HEAD@{N}. Git хранит все ссылки на коммиты 90 дней по умолчанию, даже после reset --hard или принудительной перезаписи ветки. Это первый шанс восстановления, и он срабатывает почти всегда.

git reflog - журнал всех движений HEAD, веток и stash за последние 90 дней. Каждый коммит, который когда-либо существовал в твоём локальном репозитории, лежит там, даже если он уже не виден через обычный git log.

Шаг 1. Посмотри журнал:

git reflog --all

Получишь список вроде такого:

1a2b3c4 HEAD@{0}: reset: moving to HEAD~3
9z8y7x6 HEAD@{1}: commit: рабочая версия дашборда
5w4v3u2 HEAD@{2}: commit: добавил админку

Ищи момент до того, как агент сломал. Каждая запись - это «фотография» состояния репозитория в тот момент.

Шаг 2. Восстанови состояние:

git reset --hard HEAD@{N}

Где N - номер записи в reflog, на которую откатываешься. Например, git reset --hard HEAD@{2} вернёт репозиторий в состояние сразу после коммита с админкой.

Если reflog тоже почищен (агент успел выполнить git gc):

git fsck --lost-found

Эта команда найдёт «потерянные» коммиты и блобы (объекты файлов), которые уже не привязаны ни к одной ветке. Они окажутся в .git/lost-found/commit/ и .git/lost-found/other/. Вытащить файл оттуда:

git cat-file -p <SHA1-блоба> > recovered-file.ext

Когда git reflog не помогает, случаев ровно три:

Про штатный откат агента без git, через /rewind и другие способы, отдельно разобрано в гайде как откатить изменения в Claude Code. Он спасает, когда правки ещё не ушли в репозиторий.

Команды восстановления - это последний рубеж, а до катастрофы лучше не доводить вовсе. Пройди мини-курс «Claude за вечер»: от установки до первых результатов на твоих задачах, чтобы понимать, что агент делает с проектом, и держать его в рамках.

Пройти мини-курс →

Минута 5: восстановление базы данных из бэкапа

PostgreSQL Point-In-Time Recovery (PITR) откатывает базу на любую секунду в окне 7-35 дней. Работает в Yandex Cloud Managed PostgreSQL, AWS RDS, Supabase Pro и через локальный pg_dump по cron в Coolify. Главное условие: PITR должен быть включён до инцидента. Задним числом ничего не включишь.

База удалена через DROP DATABASE, DROP TABLE или DELETE FROM ... без WHERE. Разберём по шагам.

Шаг 1. Узнай, есть ли PITR у твоего провайдера.

ПровайдерОкно PITRКоманда восстановления
AWS RDS1-35 дней (настраивается)aws rds restore-db-instance-to-point-in-time с флагом --restore-time
Yandex Cloud Managed PostgreSQL7 дней (по дефолту)Восстановить из бэкапа в консоли, указать время
Supabase Pro7 дней (только тариф Pro и выше)UI: Database → Backups → Restore
Coolify + локальный pg_dumpпо cron-расписаниюpg_restore -d new_db backup.dump

Шаг 2. Восстанавливай в новый инстанс, не в старый. Никогда не разворачивай бэкап поверх живой базы. Создавай новый инстанс из бэкапа, потом переключай приложение на него. Если что-то пойдёт не так, откатишь DNS обратно, и старая база останется цела.

Шаг 3. Если PITR не был включён, используй последний снапшот:

# AWS RDS, список снапшотов:
aws rds describe-db-snapshots --db-instance-identifier my-db

# Восстановление из снапшота:
aws rds restore-db-instance-from-db-snapshot \
  --db-instance-identifier my-db-restored \
  --db-snapshot-identifier rds:my-db-2026-05-28-12-00

Отдельный нюанс по Supabase, на котором в 2026 году горели многие. При включении PITR дневные бэкапы у него перестают создаваться. Поведение неочевидное, и можно остаться вообще без точки отката. Проверь в Dashboard → Database → Backups, что PITR активен и что при этом есть снапшот, к которому можно вернуться.

Бэкап должен лежать в другом месте, чем то, что он защищает. Тот весенний стартап, у которого агент снёс базу за девять секунд, потерял и резервные копии - они лежали на том же volume, что и прод. Хранилище бэкапов - отдельный bucket с отдельными правами доступа. Volume-level бэкап рядом с базой не спасает.

Минута 6: Time Machine, lsof и снапшот диска

Если файлы удалены прямо с диска, не из git и не из базы, есть три рабочих способа их вернуть.

На macOS - Time Machine с шагом в один час, при условии, что ноутбук был подключён к Time Capsule или внешнему диску:

# Список снапшотов:
tmutil listbackups

# Восстановить файл из последнего бэкапа:
tmutil restore /Volumes/Backup/.../my-project/file.tsx ~/projects/my-project/file.tsx

Time Machine делает снапшоты каждый час, хранит сутки почасовых копий, неделю - суточных, недельные держит бессрочно. Если ноутбук подключён к бэкап-диску, твой проект там есть с шагом в час.

На Linux, когда файл удалён, но процесс ещё держит его открытым:

# Найди все «удалённые» файлы, которые процесс держит:
sudo lsof | grep deleted

# Получишь строки вроде:
# node 12345 user 24w REG 8,1 4096 1234567 /path/to/deleted/file.txt (deleted)

# Скопируй файл прямо из /proc/PID/fd/N:
sudo cp /proc/12345/fd/24 ~/recovered-file.txt

Шанс успеха тут примерно 95%, если процесс не закрыли. Работает на ext4, xfs, btrfs.

На macOS аналог через lsof тоже есть, но копировать сложнее, потому что нет /proc/:

lsof | grep deleted

Достать содержимое можно через отладчик lldb, подключившись к процессу по его PID и вычитав нужный участок памяти в файл. Способ тонкий, но иногда это единственный путь.

Снапшот всего раздела - последний шанс на Linux:

sudo dd if=/dev/sda1 of=/external/disk-image.img bs=4M status=progress

Команда сохраняет весь раздел в образ, дальше восстанавливаешь через extundelete или photorec. Шанс зависит от того, сколько на диск записано с момента удаления. Если почти ничего - 80-90%. Если система уже поработала час - 20-30%. Поэтому первое правило и было: не перезагружать и не писать на диск.

Минута 7: что если бэкапа нет

Бэкапа нет, git reflog пуст, диск уже перезаписан. Остаётся три варианта последнего шанса.

Первый - техподдержка провайдера. Крупные облака периодически поднимают данные из своего внутреннего хранилища даже после катастрофы на стороне клиента, особенно на платных тарифах. Пиши через тикет, укажи точное время инцидента, приложи скриншоты состояния. Ниже в разделе про реальные случаи есть история, где облако вернуло 2.5 года данных. Шанс тут примерно 40-60%, окно реакции 24-72 часа.

Второй - S3-версионирование. Если файлы лежали в S3 или Yandex Object Storage и версионирование было включено, все версии физически на месте, просто помечены как «удалённые»:

# AWS - список версий объекта:
aws s3api list-object-versions --bucket my-bucket --prefix files/

# Восстановить конкретную версию:
aws s3api copy-object \
  --bucket my-bucket \
  --copy-source my-bucket/files/data.json?versionId=ABC123 \
  --key files/data.json

Третий - реконструкция из JSONL-сессий Claude Code. В 2026 году был публичный случай: у человека агент удалил недельную работу, reflog пуст, бэкапа нет. Помогла утилита claude-file-recovery:

pip install claude-file-recovery
claude-file-recovery
Страница пакета claude-file-recovery на PyPI: команда pip install и описание восстановления файлов из сессий Claude Code
Пакет claude-file-recovery на PyPI: восстанавливает файлы из JSONL-логов Claude Code в папке ~/.claude/projects/, реконструируя их из операций Write, Edit и Read (скриншот 22.07.2026)

Скрипт парсит JSONL-сессии Claude Code из ~/.claude/projects/ и восстанавливает файлы из контекста, который агент видел во время работы. На разобранном примере вернулось около 84% файлов.

Важный нюанс: Claude Code не хранит сессии вечно, старые JSONL-файлы по сообщениям из сообщества удаляются автоматически через несколько недель. Чтобы в случае катастрофы у тебя был запас истории, копируй папку раз в неделю простым cron:

# В crontab каждое воскресенье в 03:00:
0 3 * * 0 rsync -av ~/.claude/projects/ /external/claude-history-backup/

Стоит ноль рублей, а спасает ровно в ситуации «всё пропало, бэкапа нет, reflog пуст».

Шанс вернуть данные разными способами

lsof, процесс держит файл
~95%
dd сразу после удаления
80-90%
claude-file-recovery из JSONL
~84%
Техподдержка провайдера
40-60%
dd через час работы системы
20-30%

Реальные случаи 2026 года: три катастрофы и три вывода

Три задокументированных истории, у каждой свой урок.

Первый случай, весна 2026. Агент в редакторе кода получил задачу прибрать staging-окружение и одним вызовом API удалил продакшен-volume вместе с volume-level бэкапами. База ушла за девять секунд, копии - вместе с ней, потому что лежали в том же volume.

ИИ-агент удалил нашу продакшен-базу и все volume-level бэкапы одним вызовом API.

- основатель пострадавшего стартапа, апрель 2026, по материалам Tom's Hardware

Вывод: бэкап должен лежать в другом месте, чем то, что он защищает. Отдельный bucket с отдельными правами, а не копия рядом с базой.

Второй случай, начало 2026. Агент стёр продакшен-инфраструктуру образовательной data-платформы с данными за 2.5 года. Ситуацию спасло обращение в техподдержку облака, там подняли всё из внутреннего хранилища. Основатель публично разобрал инцидент и подчеркнул главное: восстановление через техподдержку - это удача, а не процесс, полагаться на него нельзя.

Вывод: не «положись на провайдера в случае катастрофы», а «планируй, что он не успеет».

Третий случай, лето 2025. Основатель одного SaaS вёл серию постов о вайб-кодинге и однажды утром нашёл, что агент удалил всю прод-базу. Его вывод был жёстким:

В vibe-coding-приложениях нельзя обеспечить заморозку кода. Просто никак.

- основатель SaaS-компании, июль 2025, из постов в X

CEO платформы ответил на следующий день: за выходные они выкатили автоматическое разделение dev- и prod-баз для всех аккаунтов, чтобы такое не повторилось.

Вывод: dev и prod - физически разные базы, с разными правами доступа. Архитектура «одна прод-база, к которой ходит и разработка, и продакшен» в 2026 году - это заложенная под проект мина.

Как запретить ИИ-агенту удалять базу: 7 правил

Команды восстановления - последний рубеж. Куда надёжнее выстроить систему, при которой агент физически не сможет уронить прод. Семь правил ниже как раз про это.

Правило 1. Plan Mode перед любой деструктивной операцией. В Claude Code:

claude --plan

Агент строит план до выполнения. Ты читаешь, видишь в плане DROP TABLE users - отменяешь. Без Plan Mode агент решает сам и применяет за миллисекунды.

Правило 2. Hooks для блокировки опасных команд. Готовый шаблон для .claude/settings.json:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'if echo \"$CLAUDE_TOOL_INPUT\" | grep -qE \"(DROP DATABASE|DROP TABLE|rm -rf|git reset --hard|git push --force)\"; then exit 2; fi'"
          }
        ]
      }
    ]
  }
}

Критичный нюанс: hook с кодом exit 1 не блокирует выполнение. Нужен ровно exit 2 или JSON с permissionDecision: "deny". Это есть в официальной документации hooks, но большинство примеров в интернете написаны с exit 1 и просто не работают.

Правило 3. Read-only пользователь базы для агента. Создай отдельного пользователя без прав на DROP, TRUNCATE, DELETE:

CREATE USER claude_readonly WITH PASSWORD 'xxx';
GRANT CONNECT ON DATABASE myapp TO claude_readonly;
GRANT USAGE ON SCHEMA public TO claude_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO claude_readonly;

Когда агенту реально нужно писать, переключаешься на пользователя с правами руками. На повседневные задачи (анализ, отчёты, дашборды) read-only хватает с запасом.

Правило 4. Автокоммит после каждой правки. В .claude/settings.json добавь hook на запись файлов:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "cd $CLAUDE_PROJECT_DIR && git add -A && git commit -m 'auto: $(date)' || true"
          }
        ]
      }
    ]
  }
}

После каждого изменения файла - автокоммит. Reflog заполняется детально, и если завтра агент что-то сломает, откатишься на любую минуту прошлого.

Правило 5. Sandbox-проект для экспериментов. Никогда не давай агенту работать там, где лежат реальные данные клиентов. Заведи отдельную папку с копией проекта на синтетических данных и обкатывай на ней новый промпт, новый MCP-сервер, новый режим. Сломает - не страшно. Как в принципе устроен каркас безопасного проекта под агента, разобрано в гайде каркас проекта для вайб-кодинга.

Правило 6. Снапшоты диска через restic каждый час:

# Установить:
brew install restic       # macOS
sudo apt install restic    # Linux

# Создать репозиторий:
restic init --repo /external/backups

# Бэкап проекта:
restic --repo /external/backups backup ~/projects

# Cron каждый час:
# 0 * * * * restic --repo /external/backups backup ~/projects

Неделя почасовых копий, месяц суточных - и у тебя всегда есть точка отката. Стоит ноль рублей, ставится за десять минут.

Правило 7. Архивация JSONL-сессий Claude Code. Настрой еженедельный rsync папки ~/.claude/projects/ на внешний диск. Тогда даже через месяц после катастрофы claude-file-recovery сможет реконструировать файлы из контекста, который агент видел. Ноль рублей и одна строка в crontab.

Три из семи правил стоят ноль рублей и ставятся за один вечер: hook на опасные команды, автокоммит на каждую правку и еженедельный rsync сессий. Даже только эта тройка закрывает большинство сценариев «агент удалил и вернуть нечем». Остальное добираешь по мере роста проекта.

Готовые Hooks для блокировки опасных команд

Ниже расширенный блок для .claude/settings.json. Он блокирует команды-катастрофы ещё до выполнения: DROP DATABASE, DROP TABLE, TRUNCATE, rm -rf /, git reset --hard, git push --force, chmod -R 777, а также хитрую форму «удалить всё» через DELETE FROM ... WHERE 1. Дополнительно запрещает запись агента в .env, credentials* и .git/. Копируй и вставляй в settings.json корня проекта.

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'INPUT=\"$CLAUDE_TOOL_INPUT\"; for PATTERN in \"DROP DATABASE\" \"DROP TABLE\" \"TRUNCATE TABLE\" \"DELETE FROM .* WHERE 1\" \"rm -rf /\" \"rm -rf ~\" \"git reset --hard\" \"git push --force\" \"git push -f\" \"chmod -R 777\"; do if echo \"$INPUT\" | grep -qiE \"$PATTERN\"; then echo \"BLOCKED: $PATTERN\" >&2; exit 2; fi; done; exit 0'"
          }
        ]
      },
      {
        "matcher": "Write",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'FILE_PATH=$(echo \"$CLAUDE_TOOL_INPUT\" | jq -r .file_path); if echo \"$FILE_PATH\" | grep -qE \"(\\.env|credentials|\\.git/|secrets)\"; then echo \"BLOCKED: write to sensitive path\" >&2; exit 2; fi; exit 0'"
          }
        ]
      }
    ]
  }
}

Что этот блок ловит:

Когда тебе реально нужно выполнить заблокированную команду (например, сознательный git push --force после переписывания истории), временно сними защиту переменной окружения:

CLAUDE_HOOKS_DISABLE=1 git push --force origin main

Либо запусти команду напрямую в терминале без агента. Hooks работают только внутри Claude Code, обычную оболочку они не трогают.

Когда давать ИИ права, а когда нет

Категорически не давай агенту флаг --dangerously-skip-permissions на проектах с реальными данными. В этом режиме (его называют YOLO) отключаются все защиты: агент запускает любые Bash-команды и пишет файлы без подтверждения. Anthropic описывает флаг как опцию для «доверенных окружений», но на практике 2026 года это прямой путь к тем самым девяти секундам, за которые уходит база.

Когда агент получает право не спрашивать, он делает три вещи:

Третий пункт самый коварный. Запустил основной агент в YOLO - его субагенты тоже в YOLO, и переопределить это уже нельзя. Один промпт, и каскад параллельных агентов делает с системой что угодно.

СитуацияYOLO допустим
Эксперимент с новым MCP-сервером в sandbox-папкеДа
Тест нового промпта на синтетических данныхДа
Работа с реальными файлами проектаНет
Любая команда, которая трогает базуНикогда
Развёртывание на продНикогда
Управление инфраструктурой (AWS, Yandex Cloud)Никогда

Альтернатива - точечные разрешения. В .claude/settings.json явно перечисляешь, что можно и что нельзя:

{
  "permissions": {
    "allow": [
      "Bash(git status:*)",
      "Bash(git log:*)",
      "Bash(npm run build:*)",
      "Read(*)",
      "Edit(src/**)"
    ],
    "deny": [
      "Bash(rm:*)",
      "Bash(git push:*)",
      "Edit(.env)",
      "Edit(prisma/migrations/*)"
    ]
  }
}

Агент видит периметр: что разрешено, что запрещено. Тебе не нужно жать «yes» на каждый шаг, при этом опасное он не выполнит. Если запускаешь несколько агентов сразу в разных ветках, безопаснее развести их по изолированным копиям репозитория, про это отдельно в гайде git worktree и параллельные агенты Claude.

Формула защиты: Plan Mode перед деструктивным + hook с `exit 2` на опасные команды + read-only юзер базы + автокоммит на каждую правку + отдельный bucket для бэкапов. Пять слоёв, при которых у агента просто нет физической возможности удалить прод безвозвратно.

Чек-лист: что делать, когда ИИ удалил данные

Сохрани страницу в закладки. В момент катастрофы открываешь её и идёшь строго по порядку - это экономит минут тридцать паники и не даёт случайно перезаписать то, что ещё можно вытащить.

А когда данные вернулись, не закрывай вкладку сразу. Разберись, как штатно откатывать агента без крайностей, по гайду как откатить изменения в Claude Code, и подтяни базу по агентам, если только начинаешь, через вайб-кодинг для новичков. Лучшая инструкция та, что прошла через твои руки до того, как случилась беда, а не после.

Рассылка

Подпишись на еженедельную рассылку

Полезные материалы и скиллы, которые усилят твою работу с нейросетями и помогут больше зарабатывать. Раз в неделю, без воды и спама.

Частые вопросы

ИИ удалил мой код через git, как вернуть?

Открой новое окно терминала и запусти git reflog --all. Это журнал всех движений веток за 90 дней. Найди строку до поломки и откатись командой git reset --hard HEAD@{N}, где N - номер записи. Если reflog уже почищен через git gc, ищи потерянные коммиты через git fsck --lost-found.

Что нажать в первую минуту, когда агент удалил базу?

Останови агента через Ctrl+C, но не перезагружай ноутбук и не закрывай процессы. Удалённые файлы физически ещё лежат на диске как свободные блоки, любая новая запись их перезапишет. Не давай агенту команду восстановить всё назад, каждое его действие может убить данные, которые ещё живы.

Можно ли восстановить базу PostgreSQL после DROP DATABASE?

Да, если у провайдера был включён Point-In-Time Recovery до инцидента. PITR откатывает базу на любую секунду в окне 7-35 дней и работает в AWS RDS, Yandex Cloud, Supabase Pro. Восстанавливай всегда в новый инстанс, не поверх живой базы. Задним числом PITR включить нельзя.

Как запретить ИИ-агенту удалять базу и код?

Настрой Hooks в .claude/settings.json, которые блокируют опасные команды перед выполнением: DROP DATABASE, rm -rf, git push --force. Работай в Plan Mode, дай агенту read-only пользователя базы, включи автокоммит после каждой правки и держи снапшоты диска через restic каждый час. Hook блокирует только с кодом exit 2.

Что делать, если бэкапа нет и git reflog пуст?

Остаётся три варианта. Написать в техподдержку провайдера, крупные облака иногда поднимают данные из своего хранилища. Восстановить из S3-версионирования, если оно было включено. Или запустить утилиту claude-file-recovery, она парсит JSONL-сессии Claude Code и реконструирует файлы из контекста, который агент видел во время работы.

Мини-курс «Claude за вечер»

За один вечер настроишь Claude под свои задачи: внутри 35+ промптов, скиллов и агентов. Гарантия возврата 7 дней. Дальше есть Лаборатория ИИ-маркетинга, где из нейросети собирается целый отдел маркетинга.

Пройти мини-курс