oops · diff
git:20260825.c1464d3 to git:20260826.0176cf2
9 added, 0 removed. Audit A to A.
---
name: oops
description: Отменить последнее изменение, которое сделала система в настройках Claude Code. Использовать, когда пользователь пишет /oops, говорит «отмени», «верни как было», «я передумал», «зачем ты это поменял», или явно не хочет только что сделанное изменение. Сначала показывает, что именно вернётся, и только после согласия откатывает.
---
# OOPS — сначала показать, потом вернуть
Ничего не удаляется в этой системе — всё, что применяется, лежит в бэкапе
(этим занимается `tools/apply.py`) и может вернуться. Задача /oops — показать ЧТО именно
вернётся, ПРЕЖДЕ чем это случится, и откатить только после явного согласия.
## Порядок обязателен
### 1. Узнай, что откатится (только чтение, ничего не меняет)
```bash
python3 "$CLAUDE_PLUGIN_ROOT/tools/oops.py" what
```
Без аргумента берётся последний откат. Скажи человеку РОВНО то, что вернул
`line` из вывода, — не пересказывай своими словами и не додумывай, что
именно поменяется.
Если откатов нет вовсе, `found` будет `false` — так и скажи: менять пока
нечего, система ещё ничего не откатывала.
### 2. Остановись здесь
Не откатывай, пока человек явно не согласился. Одно «ладно» или «да» —
согласие; молчание или смена темы — нет.
### 3. Только после согласия — откати
```bash
python3 "$CLAUDE_PLUGIN_ROOT/tools/oops.py" undo 20260812-101500
```
Последний аргумент — то же значение, что в поле `id` из шага 1 (это метка
времени бэкапа, а не выдумка — пример здесь условный).
+ Прежде чем сказать человеку «откатил», посмотри на код возврата — не только
+ на строку в stderr. Ноль — откатил, можно говорить прошедшим временем.
+ Ненулевой — НЕ откатил: `oops.py` сам в этом случае печатает строку с
+ «ОТКАЗ» и что делать дальше — передай её как есть, а не «откатил» из шага 1.
+ Выдать неудавшийся откат за удавшийся — та же поломка, которую тормоз /stop
+ называет худшей из возможных: подтверждение раньше, чем подтверждён результат.
+
## Секреты откат не возвращает
Если в `line` шага 1 упомянуты секреты, которые не восстановятся, — скажи
это прямо, не смягчая. Откат вернёт файл, но не значение пароля: оно не
хранится даже в копии.
## Если откатов несколько
```bash
python3 "$CLAUDE_PLUGIN_ROOT/tools/oops.py" list
```
покажет все доступные — по умолчанию берётся последний, но человек может
попросить конкретный.
## Чего делать нельзя
- Откатывать без явного согласия человека
+ - Пересказывать неудавшийся откат как удавшийся — сверяйся с кодом возврата,
+ а не только с текстом в stderr
- Молчать о том, что секрет не восстановится
- Придумывать, что вернёт откат, вместо чтения вывода `oops.py what`
- Удалять что-либо вместо отката — в этой системе ничего не удаляется