iiRecord
Agentic AI Atlas · Claude Code AUP refusal guard
output-guard:claude-code-aup-refusala5c.ai
II.
OutputGuard JSON

output-guard:claude-code-aup-refusal

Structured · live

Claude Code AUP refusal guard json

Inspect the normalized record payload exactly as the atlas UI reads it.

File · security/output-guards/claude-code-aup-refusal.yamlCluster · security
Record JSON
{
  "id": "output-guard:claude-code-aup-refusal",
  "_kind": "OutputGuard",
  "_file": "security/output-guards/claude-code-aup-refusal.yaml",
  "_cluster": "security",
  "attributes": {
    "displayName": "Claude Code AUP refusal guard",
    "appliesTo": "assistant-text",
    "phase": "post-call",
    "detectorKinds": [
      "refusal-stop-reason",
      "aup-violation"
    ],
    "onTrigger": "rewrite",
    "severity": "block-call",
    "description": "Detects BetaStopReason='refusal' on a completed assistant turn. Logs\ntengu_refusal_api_response and replaces the assistant content with the\nAUP-pointing message (https://www.anthropic.com/legal/aup), plus a\n/model claude-sonnet-4-20250514 switch suggestion when the active model\nis not already that variant. Marked as an isApiErrorMessage with\nerror='invalid_request' so downstream UI treats it as a non-retryable\nblock-call.\n"
  },
  "outgoingEdges": [],
  "incomingEdges": [
    {
      "from": "agent-core-impl:claude-code.core@1.x",
      "to": "output-guard:claude-code-aup-refusal",
      "kind": "output_guard_applied_by",
      "attributes": {}
    },
    {
      "from": "agent-runtime-impl:claude-code.runtime@1.x",
      "to": "output-guard:claude-code-aup-refusal",
      "kind": "output_guard_applied_by",
      "attributes": {}
    }
  ]
}