{"repo":"NousResearch/hermes-agent","public_id":"69090","display_label":"Matrix recovery key profile scoping bug fixes","summary":"Multiple fixes addressing a bug where the Matrix adapter incorrectly read the recovery key from the default secret scope instead of the active profile's scope in multi-profile/multiplex mode. Related secret-scope migration work is also included.","subsystem":"gateway","counts":{"members":5,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":3},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":76573},"resolution":{"state":"resolved","by":"pr-76573"},"freshness":{"state":"verified","last_verified_at":"2026-08-02T07:11:51+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[{"issue_number":69090,"pr_number":76573,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":74317,"pr_number":76573,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":69090,"title":"[Bug]: Matrix adapter uses only the default recovery key in multi-profile mode","url":null,"state":"closed"},{"kind":"pr","number":69110,"title":"fix(matrix): honor profile secret scope for recovery key under multiplex","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"153442dd5b","number":0},{"kind":"pr","value":"#76573","number":76573},{"kind":"pr","value":"#69090","number":69090}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":69133,"title":"fix(matrix): read MATRIX_RECOVERY_KEY from the active profile secret scope (#69090)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#69110","number":69110},{"kind":"pr","value":"#69090","number":69090},{"kind":"pr","value":"#69110","number":69110},{"kind":"pr","value":"#59739","number":59739},{"kind":"pr","value":"#69110","number":69110}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":70633,"title":"fix: use profile-scoped get_secret for MATRIX_RECOVERY_KEY (#69090)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#69110","number":69110}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":76573,"title":"fix(secrets): secret-scope migration wave — /compress, Matrix, model tools, cold hydration, WhatsApp (cluster salvage)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/secret_sources/base.py","agent/secret_sources/bitwarden.py","agent/secret_sources/command.py","agent/secret_sources/onepassword.py","agent/secret_sources/registry.py","contributors/emails/[redacted:email]","gateway/platforms/whatsapp_cloud.py","gateway/platforms/whatsapp_common.py","gateway/run.py","gateway/session.py","gateway/slash_commands.py","hermes_cli/env_loader.py","hermes_cli/tools_config.py","model_tools.py","plugins/platforms/matrix/adapter.py","plugins/platforms/whatsapp/adapter.py","tests/gateway/test_64674_multiplex_primary_token_scope.py","tests/gateway/test_75349_whatsapp_multiplex_secret_scope.py","tests/gateway/test_compress_command.py","tests/gateway/test_matrix_recovery_key_scope.py","tests/gateway/test_multiplex_credential_isolation.py","tests/hermes_cli/test_tools_config.py","tests/secret_sources/test_profile_secrets.py","tests/test_command_secret_source.py","tests/test_env_loader_secret_sources.py","tests/tools/test_browser_camofox_auth.py","tests/tools/test_browser_camofox_persistence.py","tests/tools/test_discord_tool.py","tests/tools/test_homeassistant_tool.py","tests/tools/test_terminal_tool_requirements.py","tools/browser_camofox.py","tools/discord_tool.py","tools/homeassistant_tool.py","tools/registry.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}