feat BREAKING auth feat/connect-cloud-agent-device-code #2 / 2
aaronrene · 9 days ago · Jul 13, 2026 · Diff

feat(auth): Phase B Connect cloud agent (RFC 8628) + Hermes Hostinger honesty

Ship device authorization on the persistent MCP host, Hub Integrations UI for user_code approve/deny, session-token labeling, verified mcp-remote interim docs, and seven-tier device-oauth tests so cloud agents stop pasting expiring Hub JWTs.

sha256:c2dbf04d56308f3bbf2d06e6d2eb022b8948b1e827195fe525a44e5e18d5f9c0 sha
+72 ~59 −10 symbols
22 changed · 1167 in snapshot files
sha256:88ec2869e0cc84aec78fd044ce80f5d93c856c0f5e7a1dd54db62342b1b09248 snapshot
+72
symbols added
~59
symbols modified
−10
symbols removed
22
files changed
1167
files in snapshot
0
dead code introduced
Semantic Changes 141 symbols
+ Future: Composio / Hermes catalog packaging (Knowtation) section Future: Composio / Hermes catalog packaging (Knowtation) L1–27
+ Do not section Do not L23–27
+ Simple summary section Simple summary L7–11
+ Technical summary section Technical summary L11–17
+ When to revisit section When to revisit L17–23
+ Hermes Hostinger — verified mcp-remote path (2026-07-13) section Hermes Hostinger — verified mcp-remote path (2026-07-13) L1–102
+ Failed approaches (do NOT recommend) section Failed approaches (do NOT recommend) L25–36
+ Loopback vs Hostinger callback (UX clarification) section Loopback vs Hostinger callback (UX clarification) L80–88
+ Product follow-through section Product follow-through L94–102
+ table section table L96–102
+ Secrets policy section Secrets policy L88–94
+ Simple summary section Simple summary L12–16
+ Technical summary section Technical summary L16–25
+ Verified working recipe (interim until Phase B is live for the agent) section Verified working recipe (interim until Phase B is live for the agent) L36–80
~ hub/gateway/device-oauth-provider.mjs .mjs 4 symbols added
+ _allowApproveAttempt function function _allowApproveAttempt L53–62
+ _handleRefresh function async_function _handleRefresh L237–274
+ applyDeviceScopeCeiling function function applyDeviceScopeCeiling L70–74
+ createDeviceOAuthRouter function function createDeviceOAuthRouter L88–382
~ hub/gateway/device-oauth-store.mjs .mjs 16 symbols added
+ _normalizeDevices function function _normalizeDevices L120–137
+ _pruneExpired function function _pruneExpired L106–114
+ _readDevices function async_function _readDevices L142–150
+ _storePath function function _storePath L54–57
+ _writeDevices function async_function _writeDevices L156–166
+ approveUserCode function async_function approveUserCode L245–263
+ createDeviceAuthorization function async_function createDeviceAuthorization L180–217
+ denyUserCode function async_function denyUserCode L271–283
+ findByUserCode function async_function findByUserCode L224–236
+ generateDeviceCode function function generateDeviceCode L85–87
+ generateUserCode function function generateUserCode L72–79
+ hashDeviceCode function function hashDeviceCode L64–66
+ listPendingForDisplay function async_function listPendingForDisplay L335–346
+ normalizeUserCode function function normalizeUserCode L94–99
+ pollDeviceCode function async_function pollDeviceCode L295–329
+ pruneExpiredDeviceCodes function async_function pruneExpiredDeviceCodes L351–357
~ test/helpers/device-oauth-harness.mjs .mjs 7 symbols added
+ authHeaders function function authHeaders L168–170
+ createDeviceRouter function function createDeviceRouter L54–66
+ defaultGetUserId function function defaultGetUserId L27–31
+ defaultGrantedScopes function function defaultGrantedScopes L38–40
+ fetch method async_method fetch L134–160
+ startDeviceOAuthApp function async_function startDeviceOAuthApp L91–162
+ stop method async_method stop L119–127
~ docs/AGENT-INTEGRATION.md .md 7 symbols added, 1 symbol removed, 8 symbols modified
code[yaml] variable variable code[yaml] L181–187
+ Desktop MCP (Cursor) — already good section A. Desktop MCP (Cursor) — already good L179–183
+ Hub Connect cloud agent (Phase B — preferred product path) section B. Hub Connect cloud agent (Phase B — preferred product path) L183–191
+ Hostinger Managed Hermes — verified interim (mcp-remote) section C. Hostinger Managed Hermes — verified interim (mcp-remote) L191–221
+ code[yaml] variable variable code[yaml] L201–213
+ Forbidden guidance section D. Forbidden guidance L221–228
+ Troubleshooting section Troubleshooting L228–242
+ table section table L230–237
~ )
~ table
~ docs/DURABLE-AGENT-AUTH-ROADMAP.md .md 4 symbols added, 1 symbol removed, 7 symbols modified
DoD section DoD L83–91
+ DoD checklist section DoD checklist L93–102
+ Implemented section Implemented L84–93
+ Operator follow-up (not blocking DoD) section Operator follow-up (not blocking DoD) L114–122
+ table section table L104–113
~ table
~ table
~ docs/DURABLE-AGENT-AUTH-SPEC.md .md 1 symbol added, 1 symbol removed, 1 symbol modified
Interim Born Free runbook (≤10 lines) section 12. Interim Born Free runbook (≤10 lines) L192–204
+ Interim Born Free runbook (≤15 lines) section 12. Interim Born Free runbook (≤15 lines) L192–206
~ docs/OVERSEER-HANDOVER.md .md 5 symbols added, 5 symbols removed, 5 symbols modified
NEXT SESSION — Durable agent auth Phase B (Thinking → Auto) section NEXT SESSION — Durable agent auth Phase B (Thinking → Auto) L11–53
Interim ops (Born Free) section Interim ops (Born Free) L47–53
Phase B prompt (draft) section Phase B prompt (draft) L31–47
code variable variable code L33–46
Shared context (prepend to phase prompt) section Shared context (prepend to phase prompt) L24–31
+ NEXT SESSION — Phase C scoped agent credentials (Thinking → Auto) or MCP gateway deploy of Phase B section NEXT SESSION — Phase C scoped agent credentials (Thinking → Auto) or MCP gateway deploy of Phase B L11–49
+ Interim ops (Born Free) section Interim ops (Born Free) L43–49
+ Phase C prompt (draft) section Phase C prompt (draft) L29–43
+ code variable variable code L31–42
+ Shared context (prepend to phase prompt) section Shared context (prepend to phase prompt) L23–29
~ table
~ table
~ web/hub/hub.js .js 4 symbols added
+ deviceAuthBase function function deviceAuthBase L5218–5226
+ postDeviceApproveOrDeny function async_function postDeviceApproveOrDeny L5270–5306
+ refreshDevicePendingList function async_function refreshDevicePendingList L5235–5268
+ setDeviceConnectMsg function function setDeviceConnectMsg L5228–5233
~ web/hub/index.html .html 9 symbols added, 1 symbol removed, 33 symbols modified
h3: Hub API section h3: Hub API L1335–1339
+ button#btn-copy-cloud-setup-pack section button#btn-copy-cloud-setup-pack L1373–1373
+ button#btn-device-approve section button#btn-device-approve L1370–1370
+ button#btn-device-deny section button#btn-device-deny L1371–1371
+ button#btn-device-refresh-pending section button#btn-device-refresh-pending L1372–1372
+ h3#connect-cloud-agent-heading section h3#connect-cloud-agent-heading L1362–1365
+ h3: Hub API — session access token (expires) section h3: Hub API — session access token (expires) L1335–1339
+ p#connect-cloud-agent-intro section p#connect-cloud-agent-intro L1366–1366
+ p#device-connect-msg section p#device-connect-msg L1375–1375
+ ul#device-pending-list section ul#device-pending-list L1376–1376
~ web/hub/onboarding-wizard.mjs .mjs 1 symbol modified
~ web/index.html .html 1 symbol added, 1 symbol removed, 4 symbols modified
h3: Add agents section h3: Add agents L1446–1446
+ h3: Add agents (desktop MCP) section h3: Add agents (desktop MCP) L1446–1446
Files Changed
+12 ~10
1167 in snapshot

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:c2dbf04d56308f3bbf2d06e6d2eb022b8948b1e827195fe525a44e5e18d5f9c0 --body "your comment"