# security-gate

## Назначение

`security-gate` сейчас отключен по умолчанию и больше не блокирует tool calls. Extension оставлен как переходная поверхность для будущего OMP approval wrapper: он регистрирует только command `/security-audit`, который показывает fail-safe статус и старые локальные audit events, если они есть.

## Почему он есть в проекте

Нужный продуктовый behavior уже есть в OMP approval runtime: tool declarations задают `approval` tier, settings `tools.approvalMode` выбирает режим, settings `tools.approval.<tool>` задают per-tool policy, wrapper вызывает approval prompt до extension hooks, а built-in tools вроде `bash`, `write`, `browser`, `task` и `lsp` сами описывают approval tier и prompt details. Старый локальный `security-gate` был грубым `tool_call` classifier, который мог блокировать нормальную доверенную работу в project folder.

## Пользовательская поверхность

- Пользователь может вызвать `/security-audit [limit]`, чтобы увидеть статус disabled security gate и старые audit events из in-memory ring.
- Extension больше не регистрирует `tool_call` hook и не возвращает `{ block: true }`.
- Helper `_shared/permissions.classifyToolCall` оставлен для тестов и будущего diagnostics, но он не является approval runtime.

## Как работает по коду

Entrypoint `extensions/security-gate/index.ts` регистрирует только command `security-audit`. Команда читает `_shared/permissions.getAuditEvents`, выводит fail-safe статус и последние historical events. Новые tool calls не перехватываются, не классифицируются и не блокируются этим extension.

- Entrypoint: `./extensions/security-gate/index.ts`
- Manifest: `extensions/security-gate/manifest.json`
- Commands: `security-audit`
- Tools: none
- Hooks: none
- Permissions: fs.read=none, fs.write=none, subprocess=none, network=none, browser=false, models=false, ui=`setWidget`
- State: command может читать старый in-memory audit ring из `_shared/permissions`, но extension больше не пишет туда события.
- Review: status=reviewed, source=wrapper-first, reviewedBy=pi-dev-extensions, reviewedAt=2026-06-01, risk=critical

## Ограничения и риски

Этот extension пока не настраивает `tools.approvalMode`, не пишет `tools.approval.<tool>`, не вызывает OMP approval prompt и не применяет deny/prompt/allow policy. Он также не должен использоваться как safety boundary: реальные approvals должны идти через OMP wrapper до tool execution.

## Решение

Решение: `disabled`. Следующий шаг — портировать или тонко упаковать OMP approval policy/reporting. Local blocking hook возвращать нельзя, пока не доказано, что он не конфликтует с native approval runtime и trusted project workflows.
