{"repo":"NousResearch/hermes-agent","public_id":"73175","display_label":"Validate deferred tool_call args before MCP dispatch","summary":"These items all address the same fix: validating deferred tool_call arguments against the full JSON schema prior to MCP dispatch. The members appear to be iterations or duplicates of the same change.","subsystem":"agent","counts":{"members":7,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":2,"attempt_prs":4},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":97979},"resolution":{"state":"resolved","by":"pr-100979"},"freshness":{"state":"verified","last_verified_at":"2026-09-02T06:30:34+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.2857142857142857},"fix_edges":[{"issue_number":60181,"pr_number":97979,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":73175,"pr_number":97979,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":73175,"pr_number":100979,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":73175,"title":"fix(tool-search): validate deferred tool_call arguments before MCP dispatch","url":null,"state":"closed"},{"kind":"pr","number":73179,"title":"fix(tool-search): validate deferred call arguments","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"9514d354ca47","number":0},{"kind":"commit","value":"30ec0da7f2b","number":0},{"kind":"pr","value":"#100979","number":100979},{"kind":"pr","value":"#97979","number":97979}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":73302,"title":"fix(tool-search): validate deferred tool_call arguments against full JSON Schema","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#73179","number":73179}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":73382,"title":"fix(tool-search): validate deferred tool_call args against full JSON schema (#73175)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"9514d354ca47","number":0},{"kind":"pr","value":"#73175","number":73175},{"kind":"pr","value":"#100979","number":100979},{"kind":"pr","value":"#73179","number":73179}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":73601,"title":"fix(tools): validate deferred tool_call arguments before MCP dispatch","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#73179","number":73179}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":97979,"title":"feat(tool-search): core-tool deferral — curated event-triggered set behind the bridge (−6.5K tok/call desktop, −49% schemas)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/agent_runtime_helpers.py","agent/coding_context.py","agent/context_compressor.py","agent/conversation_loop.py","agent/display.py","agent/tool_executor.py","agent/tool_guardrails.py","agent/turn_summary.py","evals/core_tool_deferral/README.md","evals/core_tool_deferral/orchestrator.py","evals/core_tool_deferral/report.py","evals/core_tool_deferral/results/.gitignore","evals/core_tool_deferral/results/SUMMARY.md","evals/core_tool_deferral/tasks.py","evals/core_tool_deferral/worker.py","hermes_cli/tools_config.py","model_tools.py","tests/agent/test_curator.py","tests/agent/test_display_todo_progress.py","tests/agent/test_phantom_tool_references.py","tests/agent/test_stall_guards.py","tests/agent/test_summarize_tool_result_type_safety.py","tests/cron/test_cron_reasoning_effort.py","tests/gateway/test_api_server_toolset.py","tests/hermes_cli/test_setup_blank_slate.py","tests/plugins/test_a2a_schema_registration.py","tests/run_agent/test_run_agent.py","tests/run_agent/test_tool_arg_coercion.py","tests/test_model_tools.py","tests/test_toolsets.py","tests/tools/test_cronjob_tools.py","tests/tools/test_desktop_tools_diet.py","tests/tools/test_modal_sandbox_fixes.py","tests/tools/test_tip_tool.py","tests/tools/test_tool_search.py","tests/tools/test_tour_tool.py","tests/tui_gateway/test_gui_surface_toolsets.py","tests/tui_gateway/test_hud_surface_note.py","tools/annotate_preview_tool.py","tools/close_terminal_tool.py","tools/cronjob_tools.py","tools/delegate_tool.py","tools/preview_tool.py","tools/process_registry.py","tools/project_tools.py","tools/session_search_tool.py","tools/tip_tool.py","tools/todo_tool.py","tools/tool_search.py","tools/tour_tool.py","toolsets.py","tui_gateway/server.py"]},{"kind":"pr","number":100979,"title":"fix(tool-search): deferred tool_call arguments no longer bypass schema validation (#73175, salvage #73179)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/tool_executor.py","model_tools.py","tests/tools/test_tool_search.py","tools/tool_search.py","website/docs/user-guide/features/tool-search.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}