{"repo":"NousResearch/hermes-agent","public_id":"103694","display_label":"Profile-scoped OAuth credentials silently not persisted","summary":"These issues and fixes concern a bug where OAuth credentials added to a profile scope are reported as saved but are actually discarded, particularly when the root credential store is empty. The work addresses the underlying persistence logic to ensure such credentials are properly stored.","subsystem":"agent","counts":{"members":6,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":4},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":134574},"resolution":{"state":"resolved","by":"pr-134574"},"freshness":{"state":"verified","last_verified_at":"2026-10-07T13:59:12+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.3333333333333333},"fix_edges":[{"issue_number":103694,"pr_number":134574,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":120177,"pr_number":134574,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":125501,"pr_number":134574,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":103694,"title":"Profile-scoped OAuth add for single-use providers prints Added but persists nothing","url":null,"state":"closed"},{"kind":"pr","number":101827,"title":"fix(auth): persist first profile OAuth row with empty root","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#103694","number":103694},{"kind":"pr","value":"#134574","number":134574},{"kind":"pr","value":"#126551","number":126551},{"kind":"pr","value":"#134574","number":134574}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":103707,"title":"fix(auth): stop fresh profile OAuth grants from being discarded","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#134574","number":134574},{"kind":"pr","value":"#101827","number":101827},{"kind":"pr","value":"#134574","number":134574}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":103712,"title":"fix(auth): persist profile single-use OAuth credentials when root store is empty (#103694)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#134574","number":134574},{"kind":"pr","value":"#126551","number":126551},{"kind":"pr","value":"#134574","number":134574},{"kind":"pr","value":"#101827","number":101827}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":126551,"title":"fix(auth): profile-scoped auth add with an empty root saves the credential instead of dropping it (salvage #103712 + #101827)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#134574","number":134574},{"kind":"pr","value":"#101827","number":101827},{"kind":"pr","value":"#134574","number":134574}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":134574,"title":"fix(auth): a profile's own auth add login is saved and kept, never forking root's grant (salvage #126551)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/credential_pool.py","agent/credential_pool_admin.py","hermes_cli/auth_commands.py","hermes_cli/auth_oauth_grants.py","tests/agent/test_credential_pool_profile_oauth_fork.py","website/docs/user-guide/profiles.md","website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/user-guide/profiles.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}