Back Home

GitHub Repo

Hermes Agent patches cross-profile credential fallback; full isolation remains unverified

The main branch now tracks directory ownership in credential scopes, addressing some isolation issues involving missing values and initialization failures. Review comments still raise questions about other fallback paths, so deployers need to check their installed version.

Digital Bodleian This file comes from the Bodleian Libraries, a group of research libraries in Oxford University.This tag does not indicate the copyright status of the attached work. A normal copyright tag is still required. See Commons:Li… · CC BY 4.0 · Image source
zh-Hant

On September 23, Nous Research merged a set of credential isolation fixes into the Hermes Agent main branch, addressing cases where the agent continued using credentials from its startup environment after switching profiles when keys were missing or reads failed. The fixes cover the desktop backend, scheduled jobs, and MCP connections. What is currently confirmed is the change to the main branch; existing installations cannot be assumed to include it. [Merge record](https://github.com/NousResearch/hermes-agent/pull/120128)

Each Hermes profile has its own data directory and credentials. The problem was that the previous credential scope stored only names and values, without recording which directory they belonged to. Some backends run tasks for other profiles even when the mode that lets multiple profiles share a process is disabled. In those cases, a missing value could trigger a fallback to the process environment, retrieving a key from the startup profile. [Original patch description](https://github.com/NousResearch/hermes-agent/pull/119459)

The new logic adds directory ownership information to the scope. When serving another profile, it returns the caller’s default value if a key cannot be found. Tests cover normal routing and task execution paths where the home directory has not been switched; environment-based credential injection for the startup profile itself is preserved. [Patch and tests](https://github.com/NousResearch/hermes-agent/pull/119459) From a deployment perspective, if a research profile lacks a service key, the expected outcome should be an unavailable feature or a prompt to complete the configuration. Automatically borrowing credentials from a work profile could send requests to the wrong account, changing both the scope of data access and which account incurs the charges.

Another fix places scope setup inside a block that guarantees cleanup. Previously, if a directory was corrupted or had been deleted, an error partway through initialization could leave partially initialized state behind, causing subsequent operations to continue pointing to the wrong directory. The patch adds cleanup on failure and regression tests, and also prevents a failure to re-register one MCP connection from blocking other connections. [Initialization patch](https://github.com/NousResearch/hermes-agent/pull/119486)

However, reviewers on the pull request still raised concerns about the shared tool credential resolver, some API key reads, and authorization settings for plugins that had not yet been registered. These comments concern specific commits. They cannot be treated as definitive findings of vulnerabilities in all current versions, nor do they justify claiming that the entire class of cross-profile issues has been eliminated. [Review discussion](https://github.com/NousResearch/hermes-agent/pull/120128)

Deployers should next verify their installed commit, configure credentials for each profile, and test missing values, read exceptions, and profile switching. The official architecture documentation also explicitly limits the scope of isolation: profile isolation does not cover end-user authentication and authorization, so access controls at the service entry point still need to be designed separately. [Architecture documentation](https://hermes-agent.nousresearch.com/docs/developer-guide/multiplexing-gateway)

Sources

  1. Hermes Agent PR #120128:整合憑證作用域修補與審查討論
  2. Hermes Agent PR #119459:跨設定檔缺值時停止回退至程序環境
  3. Hermes Agent PR #119486:初始化失敗時清理設定檔作用域
  4. Multiplexing Gateway Internals