# Politica de acesso GPT/MCP Gateway

- report_id: `mcp-gateway-access-policy-55dc74e238f17781`
- generated_at: `2026-05-05T00:10:36+00:00`
- policy_version: `mcp-gateway-access-policy.v1`
- endpoint: `https://mcps-gateway.ami-app.workers.dev/v1/execute`
- status: `passed`
- live_ready: `True`
- secret_safe: `True`
- method: `POST`
- content_type: `application/json`
- user_agent: `Codex-Mais-Humana-MCP-Publication-Gate/1.0`
- auth_scheme: `Bearer credentialRef; raw token forbidden in artifacts`
- rate_limit_per_minute: `30`
- log_retention_days: `30`

## Sumario

- Probes live avaliados: 4.
- Probes live OK: 4/4.
- Regras aprovadas: 12/12.
- Bearer bruto persistido: False.
- Falha do plugin Cloudflare nao e blocker operacional: True.

## Regras

### http.method.post

- kind: `http`
- required: `True`
- requisito: Toda chamada GPT/MCP deve usar POST em /v1/execute.
- validacao: Comparar metodo observado com POST.

### header.content-type.json

- kind: `header`
- required: `True`
- requisito: Toda chamada deve enviar Content-Type application/json.
- validacao: Comparar content_type observado.

### header.user-agent.codex

- kind: `header`
- required: `True`
- requisito: Probes Codex devem usar User-Agent Codex-Mais-Humana-MCP-Publication-Gate/1.0.
- validacao: Comparar User-Agent observado para separar WAF de runtime.

### auth.bearer.present-redacted

- kind: `auth`
- required: `True`
- requisito: Authorization Bearer pode ser usado no probe, mas relatorios devem guardar apenas existencia, hash e credentialRef.
- validacao: Confirmar authorization_present e authorization_redacted.

### waf.classification.explicit

- kind: `waf`
- required: `True`
- requisito: HTTP 403/1010 e bloqueios WAF devem ser separados de tool_not_found, erro de runtime e erro de contrato.
- validacao: Usar http_status e response_excerpt redigido para classificar falha.

### evidence.trace-audit-required

- kind: `evidence`
- required: `True`
- requisito: Toda resposta aceita deve possuir traceId e auditId reais ou derivados de hash de evidencia.
- validacao: Confirmar trace_id e audit_id por probe.

### evidence.hashes-required

- kind: `evidence`
- required: `True`
- requisito: Toda evidencia deve guardar request_hash e response_hash sem payload sensivel bruto.
- validacao: Confirmar hashes preenchidos por probe.

### redaction.no-secret-shapes

- kind: `redaction`
- required: `True`
- requisito: Evidencias nao podem conter cfat_, Authorization Bearer cru, tokens longos ou bearer numerico bruto.
- validacao: Varrer response_excerpt e campos textuais por formatos proibidos.

### rate-limit.default

- kind: `rate_limit`
- required: `True`
- requisito: Probes automatizados devem respeitar limite padrao de 30 chamadas/minuto por ator.
- validacao: Registrar limite no contrato e bloquear suites que excedam o teto.

### retention.logs

- kind: `retention`
- required: `True`
- requisito: Logs de evidencia operacional devem reter metadados redigidos por 30 dias.
- validacao: Registrar politica no artefato de acesso.

### transit.required-fields

- kind: `transit`
- required: `True`
- requisito: Fluxos interplataforma devem preservar origin, destination, tool, payload, actor, permission, result, traceId, auditId e timestamp.
- validacao: Validar campos exigidos no contrato de transito MCP.

### governance.plugin-not-operational-path

- kind: `governance`
- required: `True`
- requisito: Falha ou aceite do plugin Cloudflare fica fora do diagnostico de Workers; trabalho real usa wrangler ou validacao HTTP live.
- validacao: Confirmar que o artefato nao transforma plugin em blocker operacional.

## Probes

- `mais_humana.rulebook.compact` http `200` ok `True`
  - evidenceId: `evidence-a75a27e0669c49da1db8b615`
  - traceId: `trace-3e1c8f057ac439f4b9b3eb7f`
  - auditId: `audit-a75a27e0669c49da1db8b615`
  - requestHash: `3e1c8f057ac439f4b9b3eb7f8f5be9ac36323f08adc23db6fc7d51633076b79a`
  - responseHash: `a75a27e0669c49da1db8b6157757c0615eed06c32674c7ed87a6db5d071359de`
- `mais_humana.admin_ui.same_source` http `200` ok `True`
  - evidenceId: `evidence-af37a8d489b0038a7a6b5575`
  - traceId: `trace-17e7d8039c8c34e3f570b6de`
  - auditId: `audit-af37a8d489b0038a7a6b5575`
  - requestHash: `17e7d8039c8c34e3f570b6de8b386edc1cfd0c079084b0c7013016d2c76b388c`
  - responseHash: `af37a8d489b0038a7a6b5575970ec69855dd0f0e0ab09cf38b0e7658d3678195`
- `mais_humana.mcp_transit.ledger` http `200` ok `True`
  - evidenceId: `evidence-3f0e3b9f829c7ff912b335d0`
  - traceId: `trace-dae7d91a59e37901d50c027d`
  - auditId: `audit-3f0e3b9f829c7ff912b335d0`
  - requestHash: `dae7d91a59e37901d50c027d3a0792f697902bd4289801edb2a508f3baf177fe`
  - responseHash: `3f0e3b9f829c7ff912b335d01afb5e78acdaa331bd984713dfca757072be6bbf`
- `mais_humana.admin_routes.acceptance` http `200` ok `True`
  - evidenceId: `evidence-6be52832c728db2bbbbce461`
  - traceId: `trace-364a5b5997194d4859486557`
  - auditId: `audit-6be52832c728db2bbbbce461`
  - requestHash: `364a5b5997194d485948655720ff713f61ec091dc08ab899e302ad965ace04ba`
  - responseHash: `6be52832c728db2bbbbce461ff39cbf52b8e26111b0710f303061dc38a0ecb3d`

## Checks

- `http.method.post`: `passed`
  - motivo: todos os probes usaram POST
  - proxima_acao: manter regra como gate de release
- `header.content-type.json`: `passed`
  - motivo: todos os probes usaram application/json
  - proxima_acao: manter regra como gate de release
- `header.user-agent.codex`: `passed`
  - motivo: User-Agent operacional aplicado
  - proxima_acao: manter regra como gate de release
- `auth.bearer.present-redacted`: `passed`
  - motivo: bearer usado como credencial de probe e redigido nos artefatos
  - proxima_acao: manter regra como gate de release
- `waf.classification.explicit`: `passed`
  - motivo: WAF nao bloqueou os probes atuais; HTTP/runtime classificados separadamente
  - proxima_acao: manter regra como gate de release
- `evidence.trace-audit-required`: `passed`
  - motivo: traceId e auditId presentes em todos os probes
  - proxima_acao: manter regra como gate de release
- `evidence.hashes-required`: `passed`
  - motivo: hashes de request/response presentes
  - proxima_acao: manter regra como gate de release
- `redaction.no-secret-shapes`: `passed`
  - motivo: nenhum formato de segredo bruto detectado nas evidencias
  - proxima_acao: manter regra como gate de release
- `rate-limit.default`: `passed`
  - motivo: regra institucional materializada no artefato de politica
  - proxima_acao: manter regra como gate de release
- `retention.logs`: `passed`
  - motivo: regra institucional materializada no artefato de politica
  - proxima_acao: manter regra como gate de release
- `transit.required-fields`: `passed`
  - motivo: regra institucional materializada no artefato de politica
  - proxima_acao: manter regra como gate de release
- `governance.plugin-not-operational-path`: `passed`
  - motivo: regra institucional materializada no artefato de politica
  - proxima_acao: manter regra como gate de release

## Blockers

- Nenhum blocker tecnico na politica local.
