{"repo":"NousResearch/hermes-agent","public_id":"4379","display_label":"Reduce token overhead via lazy/deferred tool loading","summary":"These items focus on the high token cost of including all tool schemas in every API request, proposing approaches such as deferred or lazy loading, stub modes, tiered schemas, and opt-in deferral for built-in toolsets. Several also explore RAG-style or semantic tool selection to inject only relevant schemas on demand.","subsystem":"agent","counts":{"members":19,"open_issues":9,"open_issues_distinct":8,"open_prs":1,"closed_issues":4,"merged_prs":1,"attempt_prs":5},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":97979},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-09-02T05:11:30+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.07836257309941518},"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}],"members":[{"kind":"issue","number":4379,"title":"Token overhead analysis: 73% of each API call is fixed overhead (~13.9K tokens) — data + suggestions","url":null,"state":"closed"},{"kind":"issue","number":6839,"title":"Feature: Lazy Tool Schema Loading — Two-Pass Tool Injection to Reduce Token Overhead","url":null,"state":"closed"},{"kind":"issue","number":7961,"title":"[Feature] Per-profile tool selection — opt-in lightweight toolsets","url":null,"state":"closed"},{"kind":"issue","number":13332,"title":"Feature: Hybrid Tool Pre-Selection (Semantic + Keyword) — RAG-style schema injection to reduce token overhead without extra LLM round trips","url":null,"state":"open"},{"kind":"issue","number":34038,"title":"RFC: On-demand tool/skill/MCP discovery — decouple schema registration from process lifecycle","url":null,"state":"open"},{"kind":"issue","number":54963,"title":"Shrink the Core: Migrate Non-Essential Tools to Plugins/MCP Servers","url":null,"state":"open"},{"kind":"issue","number":55139,"title":"Shrink the Core: Migrate Non-Essential Tools to Plugins/MCP Servers","url":null,"state":"open"},{"kind":"issue","number":57044,"title":"Core tool schemas are ~15k tokens on every request — add a slim/tiered schema mode","url":null,"state":"open"},{"kind":"issue","number":60181,"title":"[Feature]: Let built-in toolsets opt into tool-search deferral (defer_toolsets)","url":null,"state":"open"},{"kind":"issue","number":60184,"title":"feat(tool_search): let built-in toolsets opt into deferral via defer_toolsets","url":null,"state":"open"},{"kind":"issue","number":63033,"title":"[Feature Request] /compress should report per-segment token distribution and consider tool schema compression","url":null,"state":"open"},{"kind":"issue","number":66473,"title":"Feature: MCP Smart Loading — Lazy Connection, Tool Budget, Per-Session Scoping & On-Demand Servers","url":null,"state":"closed"},{"kind":"issue","number":67273,"title":"Tool schemas consume 83% of every API request — per-session filtering and lazy loading needed","url":null,"state":"open"},{"kind":"pr","number":35457,"title":"feat(tool_search): optional embedding reranker for progressive tool disclosure","url":null,"state":"open","close_reason":{"refs":[{"kind":"commit","value":"09d86e692","number":0}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":43521,"title":"feat(tool_search): config-gated builtin tool deferral (#6839)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"7e310f5037ba","number":0},{"kind":"pr","value":"#97979","number":97979}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":48622,"title":"feat(tools): add stub_mode to reduce main-thread tool schema tokens","url":null,"state":"closed","close_reason":{"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":60182,"title":"feat(tool_search): defer_toolsets — opt built-in toolsets into deferral","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"7e310f5037ba","number":0},{"kind":"pr","value":"#97979","number":97979}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":61744,"title":"feat(tool_search): opt-in deferral for infrequent built-in toolsets","url":null,"state":"closed","close_reason":{"category":"stale_abandoned","implication":"active"},"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"]}],"trust":{"default_tier":"verified","includes_suggested":false}}