# safeagent

Блокирует повторное выполнение одного и того же действия ИИ-агентом, если запрос с тем же request_id уже обрабатывается или уже завершён.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 8
- Автор: azender1
- Лицензия: Apache-2.0 · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/azender1/SafeAgent
- Обновлён: 2026-10-07
- HTML: https://affpapa.org/nevibecode/mcp/safeagent

## Что делает

SafeAgent выдаёт каждому действию агента стабильный request_id. Первый вызов `/claim` возвращает статус PROCEED, повторный с тем же ключом — SKIP с сохранённым результатом. Если ключ застрял в состоянии PENDING после сбоя или таймаута, SafeAgent не повторяет действие молча, а держит его заблокированным до ручной проверки у провайдера.

Сервер работает как конечный автомат CLAIMABLE → PENDING → COMMITTED. После того как действие выполнено, нужно вызвать `/settle/{request_id}` с результатом, иначе claim останется подвешенным. Авторы прямо указывают границу гарантии: SafeAgent проверяет только локальное состояние заявки, а не то, принял ли внешний провайдер действие — для платежей и похожих операций это всё равно нужно сверять с данными провайдера.

Подходит для защиты от дублей в сценариях вроде повторной оплаты через Stripe, двойной отправки письма при регистрации или повторной обработки вебхука, который провайдер гарантированно шлёт как минимум раз.

## Требования
- Нужно: Python и uv (команды через uvx)

## Установка

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

**Командой платформы**
```bash
claude mcp add safeagent -- uvx safeagent-exec-guard
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from safeagent-exec-guard <команда>

### Codex

**Командой платформы**
```bash
codex mcp add safeagent -- uvx safeagent-exec-guard
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from safeagent-exec-guard <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "safeagent": {
            "command": "uvx",
            "args": [
                "safeagent-exec-guard"
            ]
        }
    }
}
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from safeagent-exec-guard <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "safeagent": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "safeagent-exec-guard"
            ]
        }
    }
}
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from safeagent-exec-guard <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add safeagent uvx safeagent-exec-guard
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from safeagent-exec-guard <команда>

## Когда брать
- не допустить повторный платёж при ретрае после таймаута
- избежать дублирующей отправки письма при регистрации
- защититься от повторной обработки вебхука Stripe или GitHub
- не создать вторую рабочую область при повторном запросе на провижининг
- держать незавершённое действие агента заблокированным, а не повторять его вслепую

## Примеры запросов агенту
- Проверь через SafeAgent, не выполнялся ли уже заказ order:TQQQ:buy:6 перед повторной отправкой
- Зарегистрируй claim на отправку письма пользователю и засчитай результат после отправки
- Обработай вебхук от Stripe через claim и settle, чтобы исключить повторную обработку

## Похожие
- [REA](https://affpapa.org/nevibecode/mcp/rea.md) — MCP-сервер · ★ 386989
- [GitHub](https://affpapa.org/nevibecode/mcp/github.md) — MCP-сервер · ★ 33918
- [Netdata](https://affpapa.org/nevibecode/mcp/netdata.md) — MCP-сервер · ★ 81115
- [browser-use](https://affpapa.org/nevibecode/mcp/browser-use.md) — MCP-сервер · ★ 119160
- [Codebase Memory](https://affpapa.org/nevibecode/mcp/codebase-memory.md) — MCP-сервер · ★ 47392
- [mcp-server](https://affpapa.org/nevibecode/mcp/mcp-server.md) — MCP-сервер · ★ 43872

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