Skip to content

Connectors reach installs with a saved toolset list (connections toolset auto-enable) - #108142

Closed
alt-glitch wants to merge 1 commit into
mainfrom
fix/connections-toolset-recently-shipped
Closed

alt-glitch wants to merge 1 commit into
mainfrom
fix/connections-toolset-recently-shipped

Conversation

@alt-glitch

@alt-glitch alt-glitch commented Sep 11, 2026 •

Copy link
Copy Markdown
Contributor

Installs that saved their toolset list before 2026-09-10 now get the manage_connections tool. Until this change, those installs never saw it, even when signed in to a paid Nous org.

The problem

hermes tools (and the desktop Toolsets UI) writes an explicit platform_toolsets.<platform> list to config.yaml. Nothing ever adds to that list. A toolset that ships after the save is read as "the user declined it" and stays off.

connections (the toolset that carries manage_connections, #106842) shipped on 2026-09-10 and is not in any release tag yet. Every install with a saved list from before that date has the tool stripped from its schema. The Nous entitlement check runs after the toolset list and never gets a vote.

Fresh installs and users on the [hermes-cli] composite were never affected. That is why the onboarding rehearsal did not show it.

flowchart LR
    A[config.yaml<br/>platform_toolsets.cli<br/>saved before 2026-09-10] --> B[_get_platform_tools]
    B --> C{connections<br/>in saved list?}
    C -- no --> D[toolset off]
    D --> E[manage_connections<br/>absent from schema]
    E --> F[entitlement check<br/>never runs]
Loading
Before (hermes chat -q, same prompt, same saved toolset list) After (hermes chat -q, same prompt, same saved toolset list)
Before After

What the user experiences

Before After
Saved platform_toolsets list from before 2026-09-10, signed in to a paid org manage_connections absent. Agent says the tool does not exist. Tool present. status returns the connector list.
Same install, user unchecked Connections in hermes tools absent absent (decline is recorded in known_builtin_toolsets and still wins)
Same install, agent.disabled_toolsets: [connections] absent absent
Fresh install, or [hermes-cli] composite present present (no change)
Signed out, or free tier with no tool pool absent absent (check_fn gate, no change)

What changes

One line in hermes_cli/tools_config.py:

_RECENTLY_SHIPPED_TOOLSETS: frozenset = frozenset({"connections"})

_enable_recently_shipped_toolsets already exists for this case. It turns a named toolset on for any platform whose saved list predates it, and honours a recorded decline. Same shape as bfl in 97c6a18 (added) and 76e306c (emptied one release later).

No migration step. The set is read at toolset-resolution time, so it applies on the next process start with no config write and no hermes update run.

Follow-up required

Empty _RECENTLY_SHIPPED_TOOLSETS in the release after the one that ships this. Once a released build has put Connections on the checklist, a user who unchecks it writes a config identical to one saved before the toolset existed, and leaving the entry in would turn their opt-out back on. Tracked in the comment above the constant.

Tests

tests/hermes_cli/test_tools_config.py already carries five invariant tests behind @_requires_recently_shipped (they skip when the set is empty). This change un-skips them.

Tree Result
base (origin/main 8c74118) 52 passed, 6 skipped
this branch 58 passed, 0 skipped

Also run: tests/tools/test_connections_tool.py, tests/tools/test_connector_bridge_wiring.py (59 passed), tests/test_tui_gateway_server.py (652 passed, 1 pre-existing failure in test_model_options_preserves_canonical_custom_row_after_agent_init that fails identically on base).

Live repro

Temp HERMES_HOME, real auth.json from a paid org, config.yaml with platform_toolsets.cli: [file, terminal, web] and known_builtin_toolsets.cli without connections. Same prompt to hermes chat -q on both trees.

Tree Tool the agent called Reply
base 8c74118 tool_search (no match) TOOL NOT AVAILABLE: manage_connections
this branch manage_connections {"action": "status"} CONNECTED: googlecalendar, slack, linear, ...

Third home with connections listed in known_builtin_toolsets.cli (a recorded decline): toolset stays off on this branch.

…m list

Installs that saved `hermes tools` (or toggled anything in the desktop
Toolsets UI) before 2026-09-10 carry a frozen `platform_toolsets.<platform>`
list. `connections` (shipped in #106842) is absent from that list, and
absence reads as "declined", so `manage_connections` is stripped from every
schema on that platform. The portal entitlement gate never gets a vote.

`_RECENTLY_SHIPPED_TOOLSETS` exists for exactly this: a toolset named there
is turned on for platforms whose saved list predates it, and a recorded
decline in `known_builtin_toolsets` still wins. Same shape as `bfl` in
97c6a18; empty the set in the release after the one that ships this, as
76e306c did.

Fresh installs and composite (`[hermes-cli]`) users were never affected,
which is why the onboarding rehearsal did not show it.
@github-actions

github-actions Bot commented Sep 11, 2026 •

Copy link
Copy Markdown
Contributor

૮ >ﻌ< ა ci review

ran on 7db0df7 — fix(tools): connections toolset reaches installs with a save

❌ Job failures

Python tests / Run tests · View job

Job Python tests / Run tests failed.


⚠️ Warnings

OSV vulnerability scan · View job

80 known vulnerabilities found in pinned dependencies.

How to fix:

Review the findings in the Security tab. Update the affected dependencies if a patched version is available.


debug info

CI timings

CI timings · View report · View job

Wall time 5m13s vs 5m21s (-2.5%). 6 job(s) slower, 8 faster,

  • Python tests / Run tests: +24.0s
  • Python lints / Windows footguns (blocking): +11.0s
  • OSV scan / Scan lockfiles / osv-scan: +11.0s
  • OS-specific tests / macOS-only tests: -11.0s
  • Check contributors / check-attribution: -7.0s

@alt-glitch alt-glitch added type/bug Something isn't working P2 Medium — degraded but workaround exists comp/cli CLI entry point, hermes_cli/, setup wizard comp/tools Tool registry, model_tools, toolsets sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades labels Sep 11, 2026
@alt-glitch
alt-glitch marked this pull request as draft September 11, 2026 11:05
@alt-glitch

Copy link
Copy Markdown
Contributor Author

Superseded by #108207. Sid's call: the _RECENTLY_SHIPPED_TOOLSETS frozenset needs a second PR a release later to undo, and its tests skip when the set is empty. #108207 delivers connections to saved toolset lists through a config migration that hermes update runs, with no follow-up. The general resolver fix (built-ins follow the plugin rule via known_builtin_toolsets) is a separate PR.

@alt-glitch alt-glitch closed this Sep 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard comp/tools Tool registry, model_tools, toolsets P2 Medium — degraded but workaround exists sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant