hermes-agent/hermes_cli
teknium1 64a50ed50a fix(a2a): default the a2a toolset OFF (opt-in), like spotify
The a2a client tools are registered unconditionally by the plugin, but a
newly-registered plugin toolset defaults to ENABLED for every platform until
the user has seen it in 'hermes tools'. That force-injected 'a2a' into every
agent's enabled_toolsets, leaking 3 tool schemas to all users and breaking
tests that assert exact toolset membership
(test_api_server_toolset::test_create_agent_respects_config_override).

Add 'a2a' to _DEFAULT_OFF_TOOLSETS so it stays opt-in (user enables via
'hermes tools'), matching the spotify precedent. The inbound platform
adapter is already opt-in (only instantiated when the a2a platform is
enabled); this aligns the outbound client tools with the same posture.
2026-08-02 15:10:15 -07:00
..
dashboard_auth
…
observability
…
proxy
…
subcommands
…
web_routers fix(dashboard): preserve maintenance writes on read polling 2026-08-02 21:30:54 +05:30
__init__.py chore: release v0.19.1 (2026.7.30) 2026-07-30 16:45:08 -07:00
_early_recovery.py
…
_parser.py feat(kanban): let a task pin its own thinking depth 2026-08-01 16:09:56 -05:00
_scan_venv_blockers.py fix(desktop): use the canonical gateway matcher for the preflight exemption 2026-07-31 22:34:28 -07:00
_startup_fast.py refactor: single chokepoint for the pre-import version fast path 2026-08-02 21:13:12 +05:30
_subprocess_compat.py
…
active_sessions.py
…
agent_import.py refactor(cli): review follow-ups for the config.yaml import guard 2026-08-02 14:55:32 +05:30
approval_mode.py
…
approvals_suggest.py
…
auth.py fix(auth): memoize the valid-token fast path too, add memo tests 2026-08-02 22:13:12 +05:30
auth_commands.py
…
azure_detect.py
…
backup.py
…
bang_shell.py feat(cli): ! shell mode — run a command without spending a model turn 2026-07-31 21:21:20 -07:00
banner.py fix(cli): route keyless first run into provider onboarding instead of a broken chat 2026-08-01 15:34:16 -07:00
blueprint_cmd.py
…
browser_connect.py
…
build_info.py
…
bundles.py
…
callbacks.py
…
checkpoints.py
…
claw.py
…
cli_agent_setup_mixin.py fix(cli): route keyless first run into provider onboarding instead of a broken chat 2026-08-01 15:34:16 -07:00
cli_billing_mixin.py
…
cli_commands_mixin.py fix(cli): dispatch /indicator to set the busy-indicator style (#50618) 2026-07-31 22:33:16 -07:00
cli_output.py
…
clipboard.py
…
codex_models.py
…
codex_runtime_plugin_migration.py
…
codex_runtime_switch.py
…
colors.py
…
commands.py fix(cli): dispatch /indicator to set the busy-indicator style (#50618) 2026-07-31 22:33:16 -07:00
completion.py
…
config.py fix(config): make get_env_value scope-aware — the last scope-blind credential reader 2026-08-01 16:42:51 -07:00
config_defaults.py feat(mem): config-driven allocator trim with telemetry and lifecycle coverage 2026-08-02 22:44:38 +05:30
config_migrations.py
…
console_engine.py fix(sessions): keep kanban worker runs out of the session lists 2026-07-31 13:53:04 -05:00
container_boot.py fix(install): support non-pid-1 container entrypoints 2026-08-01 10:52:34 -07:00
context_switch_guard.py
…
copilot_auth.py fix(model-picker): stop Copilot token-exchange retry backoff from stalling /model open 2026-08-01 14:29:04 -07:00
credential_lifecycle.py
…
cron.py
…
curator.py
…
curses_ui.py
…
dashboard_procs.py
…
dashboard_register.py
…
debug.py
…
default_soul.py
…
dep_ensure.py fix(runtime): resolve Hermes-managed Node and uv before bare PATH 2026-08-01 21:17:51 -04:00
diagnostics_upload.py
…
dingtalk_auth.py
…
doctor.py fix(cli): stabilize custom provider identities 2026-07-31 17:26:42 +05:30
dump.py
…
env_loader.py fix(env): seed .op.env bootstrap into cold-profile hydration 2026-08-02 00:11:50 -07:00
fallback_cmd.py
…
fallback_config.py fix(auth): resolve fallback api keys through secret_scope, not raw env 2026-07-31 22:35:26 -07:00
focus_view.py
…
gateway.py fix: exclude killed PID from orphan sweep, fix test, add regression test 2026-08-02 23:18:27 +05:30
gateway_enroll.py
…
gateway_windows.py
…
goals.py
…
gui_uninstall.py
…
hooks.py feat(hooks): outbound webhooks — push signed lifecycle events to external HTTP endpoints 2026-08-02 15:01:11 -07:00
init_command.py
…
input_sanitize.py
…
inventory.py
…
journey.py
…
kanban.py
…
kanban_db.py feat(kanban): let a task pin its own thinking depth 2026-08-01 16:09:56 -05:00
kanban_decompose.py
…
kanban_diagnostics.py
…
kanban_specify.py
…
kanban_swarm.py
…
lifecycle.py
…
logs.py
…
main.py feat(hooks): outbound webhooks — push signed lifecycle events to external HTTP endpoints 2026-08-02 15:01:11 -07:00
managed_scope.py
…
managed_uv.py fix(update): survive a hermes_constants cached from before the update 2026-08-01 23:06:47 -05:00
mcp_catalog.py
…
mcp_config.py
…
mcp_picker.py
…
mcp_security.py
…
mcp_startup.py fix(mcp): ensure MCP discovery completes before agent build in non-interactive sessions 2026-08-01 12:27:31 +05:30
mem_trim.py fix(mem): 5s force floor so delegate-batch closes don't stack trims 2026-08-02 22:44:38 +05:30
memory_oauth.py
…
memory_setup.py
…
middleware.py
…
migrate.py
…
moa_cmd.py
…
moa_config.py
…
model_catalog.py perf(model-picker): serve stale model caches instantly, refresh in background 2026-08-01 14:52:18 -07:00
model_cost_guard.py
…
model_normalize.py
…
model_search.py
…
model_setup_flows.py fix(cli): stabilize custom provider identities 2026-07-31 17:26:42 +05:30
model_switch.py perf(cli): cap /model picker custom-endpoint probe at 1.5s 2026-08-02 22:16:52 +05:30
models.py fix: display sub-cent model prices with extended precision instead of $0.00 2026-08-02 11:03:41 -07:00
nous_account.py
…
nous_auth_keepalive.py
…
nous_billing.py
…
nous_subscription.py
…
npm_engine.py Merge branch 'main' into ethie/bundled-node-path-windows-layout 2026-08-01 21:27:26 -05:00
onepassword_secrets_cli.py
…
oneshot.py fix(mcp): ensure MCP discovery completes before agent build in non-interactive sessions 2026-08-01 12:27:31 +05:30
pairing.py
…
partial_compress.py
…
pets.py
…
platforms.py
…
plugins.py
…
plugins_cmd.py
…
portal_cli.py
…
profile_describer.py
…
profile_distribution.py fix(distribution): path-aware allowlist; preserve legacy copy-everything when omitted 2026-07-31 22:39:34 -07:00
profiles.py
…
projects_cmd.py
…
projects_db.py
…
prompt_size.py
…
prompt_stash.py feat(cli): complete the Ctrl+S prompt stash — keybinding, state machine, tests 2026-07-31 21:21:16 -07:00
provider_catalog.py
…
providers.py refactor(providers): delegate is_official_openai_host to base_url_host_matches 2026-07-31 21:31:56 -07:00
proxy_cli.py
…
psutil_android.py
…
pt_input_extras.py
…
pty_bridge.py
…
pty_session.py
…
relaunch.py
…
route_identity.py
…
runtime_provider.py fix(cli): heal a bare custom provider to its config key, not its display name 2026-07-31 22:36:15 -07:00
secret_prompt.py
…
secrets_cli.py
…
security_advisories.py
…
security_audit.py fix(security): cache OSV malware preflight verdicts and stop double component discovery (#75485) 2026-08-01 10:47:20 -07:00
security_audit_startup.py
…
send_cmd.py feat(gateway): simplex channel enumeration + show configured platforms in hermes send --list 2026-08-02 15:08:45 -07:00
service_manager.py
…
session_export.py
…
session_export_html.py
…
session_export_md.py
…
session_filters.py
…
session_listing.py fix(gateway): scope session lists before limiting 2026-07-31 22:36:55 -07:00
session_recap.py
…
session_recovery.py
…
sessions_cmd.py
…
setup.py fix(runtime): resolve Hermes-managed Node and uv before bare PATH 2026-08-01 21:17:51 -04:00
setup_hidden_env.py
…
setup_whatsapp_cloud.py
…
skills_config.py
…
skills_hub.py refactor: share category detection and prune vendored SKILL.md hits 2026-08-02 13:31:16 +05:30
skin_cmd.py
…
skin_engine.py
…
slack_cli.py
…
slash_exec.py
…
sqlite_runtime.py
…
sqlite_safe_read.py fix(cli): untrack sqlite connections only after close succeeds 2026-07-31 23:18:12 -07:00
sqlite_util.py
…
status.py
…
stdio.py
…
suggestions_cmd.py
…
telegram_managed_bot.py
…
timeouts.py
…
tips.py
…
tools_config.py fix(a2a): default the a2a toolset OFF (opt-in), like spotify 2026-08-02 15:10:15 -07:00
toolset_validation.py
…
uninstall.py fix(install): expose hermes-agent and hermes-acp launchers on PATH 2026-07-31 22:39:11 -07:00
update_cmd.py fix(update): detect EOL-only churn via numstat, not name-only 2026-08-01 14:52:45 -07:00
update_lock.py fix(update): make the ancestor-PID lock handoff cross-platform via psutil 2026-07-31 22:28:46 -07:00
urllib_security.py
…
vercel_auth.py
…
voice.py
…
web_deps.py
…
web_git.py
…
web_models.py
…
web_server.py fix(desktop): keep cold gateway config off event loop 2026-08-02 23:20:24 +05:30
webhook.py
…
win_pty_bridge.py
…
windows_ssh_runtime.py fix(desktop): keep Windows SSH runtime at machine root 2026-08-01 14:30:16 -07:00
write_approval_commands.py
…
xai_retirement.py
…