SafeAgent — MCP-сервер для Claude Code: что делает и как установить
Блокирует повторное выполнение одного и того же действия ИИ-агентом, если запрос с тем же request_id уже обрабатывается или уже завершён.
claude mcp add safeagent -- uvx safeagent-exec-guardЧто делает safeagent
SafeAgent выдаёт каждому действию агента стабильный request_id. Первый вызов /claim возвращает статус PROCEED, повторный с тем же ключом — SKIP с сохранённым результатом. Если ключ застрял в состоянии PENDING после сбоя или таймаута, SafeAgent не повторяет действие молча, а держит его заблокированным до ручной проверки у провайдера.
Сервер работает как конечный автомат CLAIMABLE → PENDING → COMMITTED. После того как действие выполнено, нужно вызвать /settle/{request_id} с результатом, иначе claim останется подвешенным. Авторы прямо указывают границу гарантии: SafeAgent проверяет только локальное состояние заявки, а не то, принял ли внешний провайдер действие — для платежей и похожих операций это всё равно нужно сверять с данными провайдера.
Подходит для защиты от дублей в сценариях вроде повторной оплаты через Stripe, двойной отправки письма при регистрации или повторной обработки вебхука, который провайдер гарантированно шлёт как минимум раз.
Какие задачи решает
- не допустить повторный платёж при ретрае после таймаута
- избежать дублирующей отправки письма при регистрации
- защититься от повторной обработки вебхука Stripe или GitHub
- не создать вторую рабочую область при повторном запросе на провижининг
- держать незавершённое действие агента заблокированным, а не повторять его вслепую
Примеры запросов агенту
- Проверь через SafeAgent, не выполнялся ли уже заказ order:TQQQ:buy:6 перед повторной отправкой
- Зарегистрируй claim на отправку письма пользователю и засчитай результат после отправки
- Обработай вебхук от Stripe через claim и settle, чтобы исключить повторную обработку
Как установить safeagent
Командой платформы
claude mcp add safeagent -- uvx safeagent-exec-guarduvx запускает команду с именем пакета; если в README она другая — uvx --from safeagent-exec-guard <команда>
Командой платформы
codex mcp add safeagent -- uvx safeagent-exec-guarduvx запускает команду с именем пакета; если в README она другая — uvx --from safeagent-exec-guard <команда>
Файл настроек
{
"mcpServers": {
"safeagent": {
"command": "uvx",
"args": [
"safeagent-exec-guard"
]
}
}
}uvx запускает команду с именем пакета; если в README она другая — uvx --from safeagent-exec-guard <команда>
Файл настроек
{
"servers": {
"safeagent": {
"type": "stdio",
"command": "uvx",
"args": [
"safeagent-exec-guard"
]
}
}
}uvx запускает команду с именем пакета; если в README она другая — uvx --from safeagent-exec-guard <команда>
Командой платформы
gemini mcp add safeagent uvx safeagent-exec-guarduvx запускает команду с именем пакета; если в README она другая — uvx --from safeagent-exec-guard <команда>
По шагам, с командами для каждой платформы: Как подключить MCP-сервер: Claude Code, Codex, Cursor, VS Code, Gemini CLI и другие
Вопросы о safeagent
Как установить SafeAgent в Claude Code?
Выполните claude mcp add safeagent -- uvx safeagent-exec-guard.
Что делает SafeAgent?
Это MCP-сервер, который выдаёт действию агента стабильный request_id и блокирует повторное выполнение: новый ключ получает статус PROCEED, завершённый — SKIP с сохранённым результатом. Незавершённые заявки остаются в состоянии PENDING до проверки у провайдера.
Гарантирует ли SafeAgent, что внешняя операция точно выполнится один раз?
Нет, сервер проверяет только локальное состояние заявки. Авторы отдельно отмечают, что статус COMMITTED означает лишь то, что вызывающий settle-запрос подтвердил результат, а не что внешний провайдер гарантированно обработал действие один раз.