Agent tool silently drops unknown parameters despite additionalProperties: false schema constraint

Resolved 💬 1 comment Opened Apr 17, 2026 by kumaakh Closed May 25, 2026

Summary

The Agent tool's JSON schema declares "additionalProperties": false. Per the JSON Schema specification, this constraint requires that any property not explicitly defined in the schema causes validation to fail. Claude Code does not enforce this — unknown parameters are silently dropped and the tool proceeds as if the call was valid.

Steps to reproduce

Call the Agent tool with a parameter that does not exist in its schema:

{
  "description": "some task",
  "prompt": "do something",
  "unknown_param": "some_value"
}

Expected behavior

Tool call is rejected with an InputValidationError identifying the unknown parameter:

Error: unknown property 'unknown_param'.
Valid parameters: description, prompt, subagent_type, isolation, run_in_background, model

Actual behavior

Tool call succeeds. unknown_param is silently dropped. The agent runs as if the call was valid, with no warning or indication that a parameter was ignored.

Impact

This is a silent correctness failure. The caller receives a successful result and has no reason to suspect the tool call was malformed. Any logic encoded in the unknown parameter is simply lost — the tool does something different from what was requested, but reports success.

In a multi-step agentic workflow this compounds across iterations: each step looks correct, intermediate results look valid, and the root cause (the dropped parameter) is never surfaced. The caller learns the wrong mental model and repeats the mistake.

Scope

This likely affects all tools that declare additionalProperties: false, not just Agent. The issue appears to be in the tool call validation layer shared across all tools.

Suggested fix

Either:

  • Hard reject — return InputValidationError on unknown parameters (consistent with the schema declaration)
  • Warn — if leniency is intentional for forward compatibility, at minimum emit a visible warning so the caller knows a parameter was ignored

Silent success is the worst possible outcome in either case.

Environment

  • Claude Code CLI
  • Model: claude-sonnet-4-6

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗