Commit 22dd2af
Normalize cancelled MCP invocations into tool errors (#2704)
## Summary
- convert inner MCP invocation cancellation into `UserError`
- preserve the normal function-tool failure path instead of leaking
cancellation out of `invoke_mcp_tool()`
- add focused regression coverage for cancellation through the
function-tool boundary
## Why
When that cancellation leaks out of `MCPUtil.invoke_mcp_tool()`, the
nested subagent can be cancelled instead of returning a normal tool
failure.
This PR contains only the invoke-layer normalization: if the inner MCP
invocation is cancelled, it becomes a normal tool error that the
existing function-tool error handling can surface to the model.
## Validation
- `ruff check src/agents/mcp/util.py tests/mcp/test_mcp_util.py`
- `uv run pytest -q tests/mcp/test_mcp_util.py -k 'cancellation or
crash_causes_error or graceful_error_handling'`
- `timeout 30 uv run mypy src/agents/mcp/util.py
tests/mcp/test_mcp_util.py`
Co-authored-by: Codex <noreply@openai.com>1 parent 90009b2 commit 22dd2af
3 files changed
Lines changed: 42 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
78 | 88 | | |
79 | 89 | | |
80 | 90 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
369 | 369 | | |
370 | 370 | | |
371 | 371 | | |
372 | | - | |
| 372 | + | |
373 | 373 | | |
374 | 374 | | |
375 | 375 | | |
| |||
382 | 382 | | |
383 | 383 | | |
384 | 384 | | |
385 | | - | |
386 | | - | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
387 | 388 | | |
388 | 389 | | |
389 | 390 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | | - | |
| 13 | + | |
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| |||
241 | 241 | | |
242 | 242 | | |
243 | 243 | | |
244 | | - | |
| 244 | + | |
245 | 245 | | |
246 | 246 | | |
247 | 247 | | |
| |||
275 | 275 | | |
276 | 276 | | |
277 | 277 | | |
278 | | - | |
| 278 | + | |
279 | 279 | | |
280 | 280 | | |
281 | 281 | | |
| |||
539 | 539 | | |
540 | 540 | | |
541 | 541 | | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
542 | 566 | | |
543 | 567 | | |
544 | 568 | | |
| |||
0 commit comments