Follow Discord
Sweep 06 Nov 2026 · 01:32Z Build v2.1.319 537 read Stable v2.1.311 Latest v2.1.318 Next v2.1.319 Feeds RSS JSON llms.txt llms-full.txt Unofficial

Claude Code v2.1.319 ·

mcp_call can now run through Claude Code's permission checks

Programs controlling Claude Code can set check_permissions on mcp_call so a direct MCP tool call is checked like Claude's own, with clear refusals

Group of 5 Use it now Notable No documentation found New Features
JSON All of v2.1.319
Use it nowTier: how much it should matter to you
4Useful: my rating, 1 to 5
3Signal: worth watching, 1 to 5
SDKArea: what it touches
New FeaturesKind: in v2.1.319,
What probably matters to youSection of the release

What

mcp_call is a request that a program controlling Claude Code through the SDK can send. It calls a tool on an MCP server (an add-on that provides tools) directly. Such calls used to skip permission checks with no exception. The description now says permission checks are skipped unless check_permissions is set.

  • With check_permissions true, the call is decided like Claude's own call. Permission rules, the permission mode and managed settings all apply, as do PreToolUse and PostToolUse hooks (your own scripts that run before and after a tool call). Questions go to the host program as can_use_tool.
  • Refusals begin "The tool did not run: ", for example "no permission decision was reached." or "nobody can be asked in this permission mode." Where the option cannot be used, the reply is "The tool did not run: check_permissions is not available here." Refused calls raise McpCallRefusedError.
  • Refusals are capped per server in each conversation. Past the cap, the reply is "too many calls to this server were refused, so no more will run in this conversation."
  • check_permissions must be a boolean, otherwise the call fails with "mcp_call: check_permissions must be a boolean". Only a CLI that reports mcp_call_check_permissions_v1 honours it, and older CLIs ignore it.
  • The timeout_ms description now says it also limits how long hooks run and how long the call waits for an answer.
  • A new early check can reject the request with an error, and a cancelled call now stops with a remote-cancel reason. The result_not_for_model check now uses a helper shared with other code. The tengu_ptc_enabled kill switch for staged calls still falls back to true, and nothing has been read about it.
  • An mcp_tool hook is a hook that calls an MCP tool itself. These hooks now run a check on the server, tool and input before the call. Refusals return withheld results marked "Hooks: mcp_tool hook refused", and errors are turned into refusals too.
  • When an mcp_tool hook's call to a claude.ai connector is refused, the message starts "An mcp_tool hook's call was refused." In one form, used when the check cannot tell, it suggests removing the hook or pointing it at a tool that is not a connector. In the other, it suggests removing the hook, using another tool, or leaving an argument out of its input.

Why

Programs driving Claude Code can make their direct MCP calls obey the same rules, modes and hooks as Claude's own calls. People who write hooks that call claude.ai connectors get a clear reason when a call is blocked.

Read from
Names in the bundlemcp_callcheck_permissions
Feature flag
tengu_ptc_enabled Not enough to say

Nothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.

This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.319: on

These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.

Read once, for one account on one subscription tier, against v2.1.319. It isn't a statement about your account. What a flag value here can and cannot tell you

See this entry in the whole of v2.1.319 →

Feedback