Skip to content

feat(gateway): share_auth on profiles.create + MCP servers in profiles.describe/configure - #85963

Merged
teknium1 merged 1 commit into
mainfrom
feat/profile-create-shared-auth-mcp
Aug 14, 2026
Merged

teknium1 merged 1 commit into
mainfrom
feat/profile-create-shared-auth-mcp

Conversation

@teknium1

Copy link
Copy Markdown
Collaborator

Three generic widenings any multi-profile capabilities UI needs (Bot Mode's bot builder is the first consumer):

1. share_auth on profiles.create (default false — current copy behavior unchanged). When set, the auth.json COPY is skipped so the new profile resolves OAuth/token state through the existing global-root fallback chain (_load_global_auth_store reads; refreshes write through). Copying forks token state: the first refresh on either side invalidates the other for single-use refresh tokens (Anthropic/Copilot OAuth). Sharing keeps ONE live token pool across the main profile and every bot — subscriptions and OAuths just work, permanently. Static .env keys still copy (no refresh semantics, copying is safe). Receipt: mirrored.auth = 'shared'.

2. profiles.describe reports mcp_servers[{name, enabled, transport}] from the profile's config, so capability UIs can list them without parsing raw config.

3. profiles.configure accepts enabled_mcp_servers (replace semantics, mirroring enabled_toolsets): toggles entries via the standard disabled flag; enabling a server the profile doesn't define copies the definition from the launch profile's catalog (read BEFORE the home override flips config resolution; unknown names skipped, never invented). Definitions are config, not secrets — credentials stay in .env/auth.

E2E against a live HERMES_HOME: describe includes mcp_servers; create with share_authmirrored.auth='shared' and no auth.json in the profile dir; configure → applied.mcp_servers=true.

@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

૮ >ﻌ< ა ci review

ran on 274ed9d — feat(gateway): share_auth on profiles.create + MCP servers i

⚠️ Warnings

OSV vulnerability scan · View job

5 known vulnerabilities found in pinned dependencies.

How to fix:

Review the findings in the Security tab. Update the affected dependencies if a patched version is available.


debug info

CI timings

CI timings · View report · View job

Wall time 3m16s vs 6m59s (-53.2%). 9 job(s) slower, 15 faster,

  • Python tests / Run tests slice 2/12: -132.0s
  • OSV scan / Emit review status: -40.0s
  • Python tests / Run tests slice 1/12: -37.0s
  • Python tests / Run tests slice 4/12: -33.0s
  • Python tests / Run tests slice 8/12: +28.0s

@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/tui Terminal UI (ui-tui/ + tui_gateway/) tool/mcp MCP client and OAuth area/profiles Multi-profile isolation, HERMES_HOME scoping area/config Config system, migrations, profiles sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades labels Aug 14, 2026
…e/configure

Three widenings for capabilities UIs (Bot Mode's bot builder):

1. profiles.create share_auth (default false): skip the auth.json
   COPY so the new profile reads OAuth/token state through the
   existing global-root fallback and refreshes write through to it.
   A copy forks token state — the first refresh on either side
   invalidates the other for single-use refresh tokens; sharing keeps
   ONE live token pool for the main profile and every bot. Static
   .env keys still copy (no refresh semantics). Receipt:
   mirrored.auth = 'shared'.

2. profiles.describe reports mcp_servers
   [{name, enabled, transport}] from the profile's config.

3. profiles.configure accepts enabled_mcp_servers (replace
   semantics): toggles via the standard disabled flag; enabling a
   server the profile lacks copies its definition from the launch
   profile's catalog (names never invented). Launch catalog read
   BEFORE the home override flips config resolution.

E2E: describe keys include mcp_servers; create with share_auth ->
mirrored.auth='shared' + no auth.json in the profile dir; configure
applied.mcp_servers=true.
@teknium1
teknium1 force-pushed the feat/profile-create-shared-auth-mcp branch from 9971064 to 274ed9d Compare August 14, 2026 09:03
@teknium1
teknium1 merged commit 4bbc6f2 into main Aug 14, 2026
45 checks passed
@teknium1
teknium1 deleted the feat/profile-create-shared-auth-mcp branch August 14, 2026 09:08
skappafrost pushed a commit to skappafrost/hermes-agent that referenced this pull request Aug 15, 2026
…e/configure (NousResearch#85963)

Three widenings for capabilities UIs (Bot Mode's bot builder):

1. profiles.create share_auth (default false): skip the auth.json
   COPY so the new profile reads OAuth/token state through the
   existing global-root fallback and refreshes write through to it.
   A copy forks token state — the first refresh on either side
   invalidates the other for single-use refresh tokens; sharing keeps
   ONE live token pool for the main profile and every bot. Static
   .env keys still copy (no refresh semantics). Receipt:
   mirrored.auth = 'shared'.

2. profiles.describe reports mcp_servers
   [{name, enabled, transport}] from the profile's config.

3. profiles.configure accepts enabled_mcp_servers (replace
   semantics): toggles via the standard disabled flag; enabling a
   server the profile lacks copies its definition from the launch
   profile's catalog (names never invented). Launch catalog read
   BEFORE the home override flips config resolution.

E2E: describe keys include mcp_servers; create with share_auth ->
mirrored.auth='shared' + no auth.json in the profile dir; configure
applied.mcp_servers=true.
bobaba76 pushed a commit to bobaba76/hermes-agent that referenced this pull request Aug 27, 2026
…e/configure (NousResearch#85963)

Three widenings for capabilities UIs (Bot Mode's bot builder):

1. profiles.create share_auth (default false): skip the auth.json
   COPY so the new profile reads OAuth/token state through the
   existing global-root fallback and refreshes write through to it.
   A copy forks token state — the first refresh on either side
   invalidates the other for single-use refresh tokens; sharing keeps
   ONE live token pool for the main profile and every bot. Static
   .env keys still copy (no refresh semantics). Receipt:
   mirrored.auth = 'shared'.

2. profiles.describe reports mcp_servers
   [{name, enabled, transport}] from the profile's config.

3. profiles.configure accepts enabled_mcp_servers (replace
   semantics): toggles via the standard disabled flag; enabling a
   server the profile lacks copies its definition from the launch
   profile's catalog (names never invented). Launch catalog read
   BEFORE the home override flips config resolution.

E2E: describe keys include mcp_servers; create with share_auth ->
mirrored.auth='shared' + no auth.json in the profile dir; configure
applied.mcp_servers=true.
melon-xf added a commit to melon-xf/hermes-agent that referenced this pull request Sep 3, 2026
…e/configure (NousResearch#85963)

Three widenings for capabilities UIs (Bot Mode's bot builder):

1. profiles.create share_auth (default false): skip the auth.json
   COPY so the new profile reads OAuth/token state through the
   existing global-root fallback and refreshes write through to it.
   A copy forks token state — the first refresh on either side
   invalidates the other for single-use refresh tokens; sharing keeps
   ONE live token pool for the main profile and every bot. Static
   .env keys still copy (no refresh semantics). Receipt:
   mirrored.auth = 'shared'.

2. profiles.describe reports mcp_servers
   [{name, enabled, transport}] from the profile's config.

3. profiles.configure accepts enabled_mcp_servers (replace
   semantics): toggles via the standard disabled flag; enabling a
   server the profile lacks copies its definition from the launch
   profile's catalog (names never invented). Launch catalog read
   BEFORE the home override flips config resolution.

E2E: describe keys include mcp_servers; create with share_auth ->
mirrored.auth='shared' + no auth.json in the profile dir; configure
applied.mcp_servers=true.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/config Config system, migrations, profiles area/profiles Multi-profile isolation, HERMES_HOME scoping comp/tui Terminal UI (ui-tui/ + tui_gateway/) P3 Low — cosmetic, nice to have sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades tool/mcp MCP client and OAuth type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants