# audit-chain

Проверяет подписи Ed25519 у всех receipt'ов в receipts.jsonl и показывает строки, которые не прошли. Пригодится перед релизом или аудитом.

- команда · `type=command` · Claude Code, Codex, Cursor · ★ 41729
- Автор: Tom Farley
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/wshobson/agents/tree/HEAD/plugins/protect-mcp/commands/audit-chain.md
- Обновлён: 2026-10-24
- HTML: https://affpapa.org/nevibecode/commands/audit-chain

## Что делает

Команда читает `receipts.jsonl` из `./receipts/` или из каталога, указанного через `--dir`, и сверяет подпись каждой строки с публичным ключом из `./protect-mcp.key` (или из файла, названного в переменной `PROTECT_MCP_KEY`). Флаг `--last N` оставляет только последние N строк — удобно, когда файл разросся. При этом нумерация выбранных строк идёт с 1, поэтому команда печатает смещение, которое надо прибавить, чтобы получить номер строки в исходном файле.

Внутри — bash-скрипт, который разбирает аргументы и вызывает `npx @veritasacta/verify@0.9.2 --replay-chain`. Первый запуск скачивает пакет из сети. На машине без интернета поставьте его заранее: `npm install --no-save @veritasacta/verify@0.9.2`, тогда `npx` возьмёт локальную копию. Ещё нужен Node.js — ключ читается через `node -p`.

Важное ограничение: receipt'ы protect-mcp 0.7.4 не ссылаются на предыдущую запись. Поэтому удалённую, вставленную или переставленную строку эта проверка не найдёт. Чтобы ловить удаления, держите копию файла там, где оператор не может её изменить. Коды выхода: 0 — всё сошлось, 1 — хотя бы один receipt не прошёл (подпись, битая строка, неверный или отсутствующий ключ, неподдерживаемый алгоритм), 2 — проверку не удалось запустить.

## Установка

### Claude Code (родная платформа)

1. **Через маркетплейс плагинов**
В чате агента (не в терминале):
```text
/plugin marketplace add wshobson/agents
```
В чате агента (не в терминале):
```text
/plugin install protect-mcp@claude-code-workflows
```

2. **Вручную: положить файлы**
- Файл: `.claude/commands/audit-chain.md` — Вызов — /audit-chain. Для всех проектов — ~/.claude/commands/

### Codex

**Вручную: положить файлы**
- Файл: `~/.codex/prompts/audit-chain.md` — Вызов — /prompts:audit-chain. В Codex этот формат помечен устаревшим, замена — скиллы

### GitHub Copilot

**Вручную: положить файлы**
- Файл: `.github/prompts/audit-chain.prompt.md`

### Gemini CLI

**Вручную: положить файлы**
- Файл: `.gemini/commands/audit-chain.toml` — Gemini хранит команды в TOML: текст запроса — в поле prompt

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/wshobson/agents/tree/HEAD/plugins/protect-mcp/commands/audit-chain.md

## Когда брать
- проверить подписи всех receipt'ов в файле, а не по одному
- найти строку с изменённым после подписи receipt'ом
- показать аудиторам, что журнал не подменяли
- прогнать проверку целостности в CI, чтобы поймать тихое повреждение
- сверить только последние N записей, не читая весь файл

## Примеры запросов агенту
- /audit-chain
- /audit-chain --last 50
- /audit-chain --dir /var/log/receipts

## Похожие
- [agent-decision-receipts](https://affpapa.org/nevibecode/skills/agent-decision-receipts.md) — скилл · 44 установки
- [isms-audit-expert](https://affpapa.org/nevibecode/skills/isms-audit-expert.md) — скилл · 791 установка
- [production-audit](https://affpapa.org/nevibecode/skills/production-audit.md) — скилл · 4700 установок
- [hookify](https://affpapa.org/nevibecode/commands/hookify.md) — команда · ★ 44635
- [modernize-assess](https://affpapa.org/nevibecode/commands/modernize-assess.md) — команда · ★ 44635

Из того же набора: [wshobson/agents](https://affpapa.org/nevibecode/by/wshobson/agents.md) — 371 карточка

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
