Skip to main content
Glama
Un1u6ky

agent-security-gateway

by Un1u6ky

Agent Security Gateway

MCP‑слой безопасности для AI‑агентов: каждый вызов tool проходит через allow / confirm / deny и пишется в audit.

Cursor / Claude
      ↓
Agent Security Gateway  ← политики + очередь confirm
      ↓                    + UI аппрувов (:8787)
sandbox tools              + SQLite audit

Быстрый старт

npm install
npm test
npm run demo          # демо (UI + allow/deny/confirm)
# или
npm run dev           # MCP по stdio + UI для Cursor
  • UI аппрувов и аудита: http://127.0.0.1:8787

  • MCP работает по stdio (логи только в stderr)

Подключение в Cursor

{
  "mcpServers": {
    "agent-security-gateway": {
      "command": "npm",
      "args": ["run", "dev", "-w", "@agent-security/gateway"],
      "cwd": "/Users/daniildudarev/Downloads/agent-security-gateway"
    }
  }
}

Сценарий confirm

  1. Агент вызывает write_filesafe/hello.txt

  2. Открываешь UI → Approve

  3. Агент смотрит результат через get_pending / list_audit

Зачем это нужно

Агенту дают «руки» (tools): файлы, API, БД. Без ограничений он может удалить не то, уйти в цикл или сделать необратимое действие.

Этот gateway стоит между IDE‑агентом и tools:

Решение

Что происходит

allow

действие выполняется сразу

deny

блокируется, пишется в audit

confirm

ждёт человека в UI, потом execute / reject

По умолчанию — fail‑closed: неизвестный tool запрещён.

Docker

docker compose up --build

UI: http://127.0.0.1:8787

Переменные окружения

Переменная

По умолчанию

Назначение

ASG_POLICY_PATH

policies/default.yaml

Файл политик

ASG_APPROVE_HOST

127.0.0.1

Адрес bind (0.0.0.0 в Docker)

ASG_APPROVE_PORT

8787

Порт UI

ASG_APPROVE_URL

вычисляется

URL, который видит агент

ASG_DATA_DIR

./data

Каталог SQLite

Политики

Файл policies/default.yamlпервое совпадение побеждает, иначе deny.

Действие

Путь

Решение

list/read

sandbox

allow

write/delete

prod/**

deny

write/delete

safe/**

confirm → UI

неизвестный tool

deny

Sandbox

sandbox/
  safe/notes.txt      # безопасный демо‑файл
  prod/users.db       # «прод» — мутации запрещены

Все файловые tools работают только внутри sandbox/, выход через .. режется.

Tools

Tool

Назначение

gateway_status

статус, пути, URL UI

list_dir / read_file

чтение sandbox

write_file / delete_file

мутации (под политикой)

list_pending / get_pending

очередь confirm

list_audit

история решений

Демо

npm run demo

Подробнее: docs/DEMO.md

Агентам нужны руки (tools). Руки без ограждения опасны. Этот MCP‑gateway стоит между IDE‑агентом и tools, решает allow/confirm/deny и для рискованных действий ждёт человека — с полным audit trail.


Agent Security Gateway (English)

MCP security layer for AI agents: every tool call goes through allow / confirm / deny + audit.

Cursor / Claude
      ↓
Agent Security Gateway  ← policy + pending queue
      ↓                    + approve UI (:8787)
sandbox tools              + SQLite audit

Quick start

npm install
npm test
npm run demo          # demo (UI + allow/deny/confirm)
# or
npm run dev           # MCP stdio + UI for Cursor

Connect from Cursor

{
  "mcpServers": {
    "agent-security-gateway": {
      "command": "npm",
      "args": ["run", "dev", "-w", "@agent-security/gateway"],
      "cwd": "/Users/daniildudarev/Downloads/agent-security-gateway"
    }
  }
}

Confirm flow

  1. Agent: write_filesafe/hello.txt

  2. Open UI → Approve

  3. Agent: get_pending / list_audit

Why it exists

Agents get hands (tools): files, APIs, databases. Without guardrails they can delete the wrong thing, loop on expensive calls, or take irreversible actions.

This gateway sits between the IDE agent and tools:

Decision

What happens

allow

execute immediately

deny

block + write audit

confirm

wait for a human in the UI, then execute / reject

Default is fail-closed: unknown tools are denied.

Docker

docker compose up --build

UI: http://127.0.0.1:8787

Env

Variable

Default

Meaning

ASG_POLICY_PATH

policies/default.yaml

Policy file

ASG_APPROVE_HOST

127.0.0.1

Bind address (0.0.0.0 in Docker)

ASG_APPROVE_PORT

8787

Approve UI port

ASG_APPROVE_URL

derived

URL shown to agents

ASG_DATA_DIR

./data

SQLite DB directory

Policy model

policies/default.yaml — first match wins, default fail-closed deny.

Action

Path

Decision

list/read

sandbox

allow

write/delete

prod/**

deny

write/delete

safe/**

confirm → human UI

unknown tool

deny

Sandbox

sandbox/
  safe/notes.txt      # harmless demo file
  prod/users.db       # fake "prod" — mutations denied

All filesystem tools are rooted at sandbox/ and reject .. escapes.

Tools

Tool

Purpose

gateway_status

status, paths, UI URL

list_dir / read_file

read sandbox

write_file / delete_file

mutations (policy-gated)

list_pending / get_pending

confirm queue

list_audit

decision history

Demo

npm run demo

Details: docs/DEMO.md

Agents need hands (tools). Hands without a guardrail are dangerous. This MCP gateway sits between the IDE agent and tools, decides allow/confirm/deny, and for risky actions waits for a human — with a full audit trail.