diff --git a/packages/cli/src/cli/agent-relay-mcp.startup.test.ts b/packages/cli/src/cli/agent-relay-mcp.startup.test.ts index 94f664185..ebcca9f9b 100644 --- a/packages/cli/src/cli/agent-relay-mcp.startup.test.ts +++ b/packages/cli/src/cli/agent-relay-mcp.startup.test.ts @@ -593,6 +593,10 @@ describe('createAgentRelayMcpServer', () => { // `node up` mentioned it. expect(result.structuredContent.message).toContain('node_abc'); expect(result.structuredContent.message).toContain('relay cloud enroll'); + // A cleared enrollment means the write SUCCEEDED. Reporting it through the + // persistence-failure wording would tell the caller the key never landed. + expect(result.structuredContent.message).toContain('persisted for this project'); + expect(result.structuredContent.message).not.toContain('could not be persisted'); }); it('registers submit_result when a spawned-agent result callback is configured', async () => { diff --git a/packages/cli/src/cli/agent-relay-mcp.ts b/packages/cli/src/cli/agent-relay-mcp.ts index d24af51b3..8ef54b2d6 100644 --- a/packages/cli/src/cli/agent-relay-mcp.ts +++ b/packages/cli/src/cli/agent-relay-mcp.ts @@ -499,11 +499,15 @@ function registerAgentRelayTools( } else { setSession({ workspaceKey: key }); } + // Two distinct outcomes, never conflated: the write failed, or the write + // succeeded and dropped this project's enrolled fleet node. Reporting the + // second as the first would tell the caller the key had not persisted. let persistenceWarning: string | undefined; + let clearedEnrollmentWarning: string | undefined; try { // Joining a different workspace drops this project's enrolled fleet // node; surface that here instead of at the next `node up`. - persistenceWarning = describeClearedEnrollment(persistWorkspaceSession({ workspaceKey: key })); + clearedEnrollmentWarning = describeClearedEnrollment(persistWorkspaceSession({ workspaceKey: key })); } catch (error) { const persistenceError = error instanceof Error ? error.message : String(error); persistenceWarning = @@ -517,7 +521,9 @@ function registerAgentRelayTools( const activeMessage = switchingWorkspace ? 'Workspace key set. Call "register_agent" to join this workspace.' : 'Workspace key set.'; - const message = persistenceWarning ? `${activeMessage} ${persistenceWarning}` : persistedMessage; + const message = persistenceWarning + ? `${activeMessage} ${persistenceWarning}` + : [persistedMessage, clearedEnrollmentWarning].filter(Boolean).join(' '); return textContent(message); } );