Агент создаёт одноразовую ссылку. Пользователь заполняет форму.
Данные уходят прямо в хранилище секретов.
Агент видит только { status: "ok" }.
Agent ZeroCreds User │ │ │ ├─POST /api/session/create──►│ │ │ {fields, destination} │ │ │◄─{url, expires_at}─────────┤ │ │ │ │ ├─send URL (TG / email)─────────────────────────────────►│ │ │ │ │ │◄─GET /f/{token}───────────┤ │ │──form html────────────────►│ │ │◄─POST {credentials}────────┤ │ │ │ │ ├─write to secret store │ │ │ │ ├─GET /session/{t}/status────►│ │ │◄─{ status: "done" }──────────┤ │ │ │ │ │ never saw credentials │ │
curl -X POST https://zerocreds.ru/api/session/create \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "Connect GitHub", "description": "Paste your token with repo scope", "fields": [ {"name":"token","label":"Personal Access Token","type":"password"} ], "destination": "prod-gcp" }' ← { "url": "https://zerocreds.ru/f/8a3f…" } # отправляем ссылку пользователю → ждём → опрашиваем: curl https://zerocreds.ru/api/session/8a3f…/status \ -H "Authorization: Bearer YOUR_TOKEN" ← { "status": "done" } ✓ пароль агент не видел
Данные отправляются напрямую в ZeroCreds — минуя агента и LLM-контекст.
Когда пользователь нажмёт «Отправить», вы получите { status: "done" },
а данные уже будут в вашем хранилище секретов.
# ~/.claude/settings.json { "mcpServers": { "zerocreds": { "command": "npx", "args": ["-y", "zerocreds-mcp"], "env": { "ZEROCREDS_TOKEN": "your-token-here" } } } } # Claude Code вызывает инструмент напрямую: zerocreds.collect_credentials({ title: "Connect GitHub", fields: [{ name: "token", type: "password" }], destination: "local-dev" }) ← { status: "done" } данные в ~/agent-tokens/
Добавьте ZeroCreds как MCP-сервер. Claude Code подхватит инструмент автоматически — никаких ручных HTTP-запросов, никакой возни с токенами в промпте.
Claude создаёт сессию, ждёт пользователя и продолжает задачу когда придёт { status: "done" }. Сами данные не попадают в контекст разговора.
ZeroCreds использует роль roles/secretmanager.secretVersionAdder — может добавить версию, но физически не может прочитать секрет. Гарантировано IAM, не кодом.
IAM-политика разрешает только secretsmanager:PutSecretValue на конкретный ARN. GetSecretValue в политике не значится — write-only по конструкции.
Политика Vault разрешает create и update на нужном пути. read просто отсутствует — Vault блокирует на уровне политики.
Самый простой вариант для локальных агентов. Данные пишутся как JSON в ~/agent-tokens/{uid}/{name} с правами 0600. Без внешних зависимостей.
Специалист по безопасности может проверить точный коммит на вашем сервере через /version,
сверить с публичным кодом и убедиться построчно — что происходит с данными пользователя.
Получите токен за 30 секунд на zerocreds.ru, или разверните на своём сервере для полного контроля. MIT лицензия — аудитируйте код, форкайте, запускайте где угодно.
Настроим ZeroCreds под ваш стек — хранилища, интеграцию с агентом, всё что нужно.
Любой может проверить работающий сервер в любой момент.
GET https://zerocreds.ru/version возвращает git-хэш коммита.
Сверьте с исходниками на GitHub. Построчно.