From 978e55ffd61a476af5aa11084d38e0ad0e0c3916 Mon Sep 17 00:00:00 2001 From: nadavshohat Date: Tue, 30 Jun 2026 16:55:09 +0300 Subject: [PATCH] fix(agent_toolset): grep tolerates extra model-supplied args --- src/anthropic/lib/tools/agent_toolset.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/anthropic/lib/tools/agent_toolset.py b/src/anthropic/lib/tools/agent_toolset.py index d771996a..29d30b6a 100644 --- a/src/anthropic/lib/tools/agent_toolset.py +++ b/src/anthropic/lib/tools/agent_toolset.py @@ -645,8 +645,15 @@ async def glob(pattern: str, path: Optional[str] = None) -> str: def beta_grep_tool(ctx: AgentToolContext) -> BetaAsyncFunctionTool[Any]: @beta_async_tool(name="grep", input_schema=BetaManagedAgentsAgentToolset20260401GrepInput) - async def grep(pattern: str, path: Optional[str] = None) -> str: - """Search file contents for a regular expression.""" + async def grep(pattern: str, path: Optional[str] = None, **_ignored: Any) -> str: + """Search file contents for a regular expression. + + Extra keyword arguments are accepted and ignored. A model often passes + Claude-Code-style grep options (e.g. ``output_mode``, ``head_limit``, + ``-i``) that are not part of the ``agent_toolset_20260401`` grep schema + (``pattern``/``path`` only). Without swallowing them, ``validate_call`` + rejects the call and the model gets a hard error instead of results. + """ try: search = resolve_path(ctx, path) if path else Path(ctx.workdir).resolve() except ValueError as e: