Git и сессии - это память Claude Code, и работать с ними безопасно можно только различая источники изменений. Перед любым действием агента полезно отделить три состояния: изменения, существовавшие до запуска, изменения текущей сессии и изменения других процессов или людей. Смешать их - значит потерять контроль над тем, что именно уходит в коммит, и однажды затереть чужую работу, приняв её за мусор сессии.
Отсюда твёрдое правило: никогда не разрешайте агенту "очистить всё лишнее", если working tree изначально был грязным. Правильный запрос - показать git status, отделить изменения, существовавшие до задачи, и явно не трогать их: не откатывать, не форматировать, не включать в коммит. Это дешёвая страховка от самой обидной потери - когда автономный агент "прибирается" и уносит с собой незакоммиченную работу, которую вы считали в безопасности.
Сессии хранят историю разговора, и управляют ими и из shell, и изнутри. claude -c продолжает последнюю сессию текущего каталога, claude -r возобновляет по имени или ID, к нему можно сразу дописать задачу. Внутри CLI есть /rename, /resume, /branch, /clear и /export. Тонкости: --continue берёт последнюю сессию контекста каталога, --resume ищет по имени или ID, --fork-session при возобновлении создаёт новый ID, /branch открывает альтернативную линию разговора, а /fork отправляет копию в отдельную фоновую сессию.
Полезно один раз собрать команды сессий рядом, чтобы не путать continue, resume и branch. Ниже - управление из shell и изнутри CLI. К этой карте возвращаются, когда работа над задачей растянулась на несколько заходов: понятные имена сессий и осознанный выбор между продолжением, возобновлением по имени и ветвлением превращают историю из свалки в набор именованных линий работы.
Checkpointing и rewind - это локальный механизм отката, а не замена git. Claude Code сохраняет снимки до правок, и двойной Esc на пустом вводе или /rewind открывают варианты: восстановить только разговор, только файлы, оба или сделать summary выбранного диапазона. Но checkpoint не отслеживает каждое внешнее изменение: если файлы поменял hook, форматтер или сторонний процесс, границы отката нужно проверять - автоматика их может не увидеть.
Возобновление после долгого перерыва имеет свою цену. Длинная старая сессия может потребовать дорогого холодного replay кэша; на подписке Claude Code может предложить resume from summary. Практически помогает дисциплина: давать сессиям понятные имена, завершать логическую задачу через /clear, а не растить историю бесконечно, делать /recap перед паузой, вызывать /compact на естественной границе, а не посреди debug-трейса, и экспортировать важный итог в issue, PR или доки.
Экспорт итога наружу - это не формальность, а защита от единой точки отказа. Если весь контекст задачи живёт только в транскрипте сессии, вы заложник этого транскрипта: он истечёт, сожмётся или потеряется. Вынесенный в issue, PR или документ результат переживает любую сессию и доступен команде. Транскрипт - рабочая память, а не архив; долговременная история и review живут в git и в трекере, а не в разговоре с агентом.
Для очистки состояния проекта есть отдельная команда, и она разрушительна. claude project purge удаляет транскрипты, списки задач, debug-логи, историю правок и промптов, запись проекта - поэтому сначала всегда --dry-run с абсолютным путём. Она не предназначена для обычного "починить зависшую сессию". Типичный провал - позволить агенту прибрать грязный tree или спутать checkpoint с коммитом; правильный подход - разделять источники изменений, беречь git как настоящую историю и выносить итоги наружу.
# Не дать агенту убрать чужое из грязного дерева
Покажи git status и отдели изменения, существовавшие до текущей задачи.
Не откатывай, не форматируй и не включай их в commit.# Сессии из shell
claude -c # продолжить последнюю в этом каталоге
claude -r auth-refactor # возобновить по имени/ID
claude -r auth-refactor "прогони оставшиеся regression tests"
# Изнутри CLI: /rename /resume /branch /clear /export
# --continue (последняя), --resume (по имени/ID), --fork-session (новый ID)