Conversation
A profile with session_search.protected: true in its config.yaml is invisible to other profiles' session_search (direct reads rejected, profile scan skips it); the protected profile itself reads everyone as before. Broken/missing target config counts as unprotected. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Collaborator
|
Thanks for covering both the explicit-profile and bare-ID lookup paths; current main does expose cross-profile sessions through Problems
Suggested changes
This is an automated hermes-sweeper review. |
…E tests
Three fixes from hermes-sweeper review:
1. agent/tool_executor.py: forward profile=next_args.get("profile")
in the sequential inline dispatcher for session_search.
2. agent/agent_runtime_helpers.py: same fix in the concurrent
(agent-runtime) inline dispatcher.
3. website/docs/user-guide/profiles.md: document that
session_search.protected controls session_search visibility only,
not filesystem/memory/tool access.
Tests: add TestProtectedProfileWithRealHome — exercises profile
resolution through real HERMES_HOME filesystem layout with real
config.yaml and SessionDB files, covering explicit profile= reads,
bare _locate_session_db protection, and own-profile access.
14 tasks
This branch has not been deployed
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
A profile can now opt out of being visible to other profiles'
session_searchby declaring in its ownconfig.yaml:_resolve_profile_dbrejects direct reads of a protected profile by any other profile (same error channel as "profile does not exist")._locate_session_dbskips protected profiles when scanning for a bare session id.Why
In multi-profile deployments some profiles hold conversations of a fundamentally different sensitivity class (e.g. a personal/mental-health assistant next to infra bots). Today every profile can read every other profile's
state.dbthroughsession_search— there is no permission layer at all. This adds a minimal, config-driven one.Tests
New tests next to the existing
session_searchsuite (tmp profiles-root + monkeypatchedHERMES_HOME): caller→protected target rejected, target reads itself fine, protected caller reads others fine, locate-scan skips protected profiles, broken config treated as unprotected. Full file: 59 passed.🤖 Generated with Claude Code