diff --git a/src/servers/sidecar-registry.ts b/src/servers/sidecar-registry.ts index ed86330d..220975fe 100644 --- a/src/servers/sidecar-registry.ts +++ b/src/servers/sidecar-registry.ts @@ -225,7 +225,6 @@ async function ensureClaudeSidecar(email: string): Promise { } async function spawnAndWaitForRegistration(email: string, name: string): Promise { - // Get proxy secret for auth const proxySecret = await getProxySecret(); const proxyPort = process.env.ANTHROPIC_PROXY_PORT ?? '5051'; diff --git a/src/servers/sidecar/claude/claude-manager.ts b/src/servers/sidecar/claude/claude-manager.ts index ece56cb0..ed4cd39f 100644 --- a/src/servers/sidecar/claude/claude-manager.ts +++ b/src/servers/sidecar/claude/claude-manager.ts @@ -12,6 +12,8 @@ const SEND_TIMEOUT_MS = 5 * 60 * 1000; // The actual binary lives at ~/.local/bin/claude, symlinked from /usr/local/bin/claude. const CLAUDE_BIN = '/usr/local/bin/claude'; +// Capture original HOME before user-instance overrides it +const HOST_HOME = process.env.HOME!; const DATA_PATH = process.env.DATA_PATH ?? join(process.cwd(), 'data'); // Build full bwrap sandbox args for Claude (prefix + Anthropic env + runuser suffix) @@ -28,11 +30,13 @@ function buildSandboxArgs(email: string): string[] { // Active streaming processes const activeProcs = new Map(); -// MCP config path, set by user-instance at startup -let mcpConfigPath: string | undefined; +// MCP config paths, set by user-instance at startup +let mcpSandboxPath: string | undefined; // path inside bwrap sandbox (/data/...) +let mcpHostPath: string | undefined; // path on the host filesystem -export function setMcpConfigPath(path: string): void { - mcpConfigPath = path; +export function setMcpConfigPath(sandboxPath: string, hostPath: string): void { + mcpSandboxPath = sandboxPath; + mcpHostPath = hostPath; } // ── Blocking send ── @@ -60,7 +64,9 @@ export async function spawnClaude(params: ClaudeSpawnParams): Promise