Conversation
TheTom
force-pushed
the
codex/profile-enabled-toolsets
branch
from
August 18, 2026 01:21
781a03d to
175b7db
Compare
TheTom
force-pushed
the
codex/profile-enabled-toolsets
branch
2 times, most recently
from
August 18, 2026 01:33
bab2a80 to
2bfb593
Compare
profiles.configure persists an explicit tools.enabled_toolsets pin, and profiles.describe presents that pin as the profile capability source of truth. The TUI/Desktop runtime resolver did not consume it: focus-mode coding posture could replace the selected capabilities when a Bot Chat started in a code workspace. Resolve the active profile pin after the operator HERMES_TUI_TOOLSETS override but before coding posture. Discover profile plugins before the agent snapshots schemas, and preserve enabled MCP servers plus client-surface toolsets alongside the pin. Document the precedence contract in AGENTS.md. Cover the resolver relationship with a focused plugin/MCP/surface test and a profile-scoped config test that reads the pin through the real load_config path.
TheTom
force-pushed
the
codex/profile-enabled-toolsets
branch
from
August 18, 2026 15:02
2bfb593 to
1bc06f7
Compare
Contributor
Author
|
CI follow-up: the earlier failure was in |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Completes the runtime side of the profile capability editor contract introduced by #85216 and made user-honest by #86227.
profiles.configurepersists a non-empty profile capability selection attools.enabled_toolsets, andprofiles.describepresents that pin as authoritative. The TUI/Desktop gateway did not consume it when constructing an agent. A Bot Chat opened in a code workspace could therefore show one capability set in the editor while receiving the genericcodingtoolset at runtime.Root cause
#43316 intentionally made focus-mode coding posture fill only an unpinned default selection.
_load_enabled_toolsets()recognizedHERMES_TUI_TOOLSETSas an explicit pin, but never checked the equivalent profile-scoped pin in the activeHERMES_HOMEbefore asking coding posture for a selection.That made the editor and runtime disagree, and profile plugin tools disappeared from the model schema without an error.
Fix
The gateway now resolves toolsets in this order:
HERMES_TUI_TOOLSETSoperator overridetools.enabled_toolsetspinFor a profile pin, plugin discovery runs before the agent snapshots schemas. Enabled MCP servers and client-surface toolsets continue to ride alongside the selected profile capabilities. An absent pin, including an editor-cleared empty list, preserves the existing posture and platform behavior.
No config keys, model tools, plugin-specific behavior, or user-facing commands are added.
Changes made
tui_gateway/server.py: consume the active profile capability pin before coding posture and document the resolver contract.tests/test_tui_gateway_server.py: cover precedence, generic plugin discovery, MCP inclusion, desktop surface inclusion, and a real profile-scopedconfig.yamlload.AGENTS.md: record the capability-resolution precedence so future gateway changes preserve editor/runtime parity.How to test
tools.enabled_toolsets: [memory, web].agent.coding_context: focus.memory,web, enabled MCP servers, and its client-surface tools rather than replacing the profile selection withcoding.HERMES_TUI_TOOLSETS; confirm that operator override still wins.Verification
scripts/run_tests.sh tests/test_tui_gateway_server.py -q— 587 passedscripts/run_tests.sh tests/test_tui_gateway_server.py -k load_enabled_toolsets -q— 13 passedruff check tui_gateway/server.py tests/test_tui_gateway_server.py— passedgit diff --check upstream/main...HEAD— passedDocumentation
No user guide update is needed because this introduces no new setting or workflow. The existing setting now behaves as documented by the profile editor. The internal precedence invariant is recorded in
AGENTS.md.