Skip to content

fix: filter hosted_tool_call types in remove_all_tools handoff filter#3386

Open
ioleksiuk wants to merge 1 commit into
openai:mainfrom
ioleksiuk:fix/filter-hosted-tool-call-handoff
Open

fix: filter hosted_tool_call types in remove_all_tools handoff filter#3386
ioleksiuk wants to merge 1 commit into
openai:mainfrom
ioleksiuk:fix/filter-hosted-tool-call-handoff

Conversation

@ioleksiuk
Copy link
Copy Markdown
Contributor

Summary

Extends the fix in #3095 to cover one more raw input item type that the handoff filter was missing.

`hosted_tool_call` is a real tool-call item type recognized elsewhere in the SDK:

  • `src/agents/run_state.py:2024` — raw item normalization treats it as a tool-call type alongside `shell_call`/`apply_patch_call`/`local_shell_call`.
  • `src/agents/run_internal/tool_execution.py:2368` — `_is_hosted_mcp_approval_request` detects payloads serialized as `{"type": "hosted_tool_call", "provider_data": {"type": "mcp_approval_request"}}`.

However, `_remove_tool_types_from_input` in `src/agents/extensions/handoff_filters.py` did not include `hosted_tool_call` in its filter list. Raw `hosted_tool_call` items in `input_history` therefore survived `remove_all_tools` handoff filtering — leaking provider-level tool-call payloads (including hosted MCP approval requests in the raw `hosted_tool_call` form) into the downstream agent's history.

Add `hosted_tool_call` to the filter list and extend the parametrized list in the existing `test_removes_hosted_tool_types_from_input_history` regression test.

Test plan

  • `uv run pytest tests/test_extension_filters.py -k hosted_tool` — 1 passed (with the new entry in the list).
  • `uv run ruff check` on the touched files — All checks passed.

Issue number

N/A — found while auditing for the same gap that #3095 fixed for `custom_tool_call`.

Checks

  • I've added new tests (if relevant)
  • I've added/updated the relevant documentation (no doc changes needed)
  • I've run `make lint` and `make format`
  • I've made sure tests pass

Extend the fix in openai#3095 to cover one more raw input item type that the
handoff filter was missing. `hosted_tool_call` is a real tool-call type
recognized elsewhere in the SDK — see
`src/agents/run_state.py:2024` (raw item normalization) and
`src/agents/run_internal/tool_execution.py:2368` (hosted MCP approval
request detection, which checks for `type == "hosted_tool_call"` plus
`provider_data.type == "mcp_approval_request"`). However, the
`_remove_tool_types_from_input` filter in
`src/agents/extensions/handoff_filters.py` did not include it, so raw
`hosted_tool_call` items survived `remove_all_tools` handoff filtering.

Add `hosted_tool_call` to the filter list and to the parametrized list
in the existing `test_removes_hosted_tool_types_from_input_history`
regression test.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants