{"record":{"id":"8aa23cb756cf61e8","repo":"BerriAI/litellm","slug":"panw-prisma-airs-blocked","errorCode":"panw_prisma_airs_blocked","errorMessage":"MCP request blocked: no rewritable argument field present","messagePattern":"MCP request blocked: no rewritable argument field present","errorType":"http","errorClass":"HTTPException","httpStatus":400,"severity":"error","filePath":"litellm/proxy/guardrails/guardrail_hooks/panw_prisma_airs/panw_prisma_airs.py","lineNumber":592,"sourceCode":"        masked_text: str,\n        *,\n        is_blocked: bool = True,\n    ) -> None:\n        \"\"\"Write masked arguments back to MCP request_data fields.\n\n        - ``arguments`` is the authoritative field that ``call_mcp_tool``\n          reads, so it must be updated first.\n        - ``mcp_arguments`` is mirrored for consistency / test observability.\n        - If the original args were structured (dict/list), attempt\n          ``json.loads`` to preserve the type; block if the masked text\n          is not valid JSON (to avoid corrupting structured args).\n        - If neither ``arguments`` nor ``mcp_arguments`` is present in\n          request_data, block — do not silently invent a new field.\n        \"\"\"\n        has_arguments: Final = \"arguments\" in request_data\n        has_mcp_arguments: Final = \"mcp_arguments\" in request_data\n        if not has_arguments and not has_mcp_arguments:\n            raise HTTPException(\n                status_code=400,\n                detail={\n                    \"error\": {\n                        \"message\": \"MCP request blocked: no rewritable argument field present\",\n                        \"type\": \"guardrail_violation\",\n                        \"code\": \"panw_prisma_airs_blocked\",\n                    }\n                },\n            )\n\n        # If the original args were structured, preserve the type.\n        if isinstance(original_args, (dict, list)):\n            try:\n                parsed: Final[object] = json.loads(masked_text)\n            except (json.JSONDecodeError, TypeError):\n                raise HTTPException(\n                    status_code=400,\n                    detail={","sourceCodeStart":574,"sourceCodeEnd":610,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/guardrails/guardrail_hooks/panw_prisma_airs/panw_prisma_airs.py#L574-L610","documentation":"Error \"MCP request blocked: no rewritable argument field present\" thrown in BerriAI/litellm.","triggerScenarios":"Thrown at litellm/proxy/guardrails/guardrail_hooks/panw_prisma_airs/panw_prisma_airs.py:592 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the MCP tool call has at least one string argument that can be scanned/rewritten.","If the tool legitimately has no rewritable fields, exempt it from this guardrail or adjust the guardrail's MCP argument handling."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}