fix(daemon): include HOME in service env (#1214)

Thanks @ameno-.

Co-authored-by: Ameno Osman <ameno.osman13@gmail.com>
This commit is contained in:
Peter Steinberger
2026-01-19 08:39:12 +00:00
parent c21469b282
commit 47d1f23d55
3 changed files with 18 additions and 1 deletions

View File

@@ -17,6 +17,7 @@ Docs: https://docs.clawd.bot
- Plugins: surface plugin load/register/config errors in gateway logs with plugin/source context. - Plugins: surface plugin load/register/config errors in gateway logs with plugin/source context.
- Agents: propagate accountId into embedded runs so sub-agent announce routing honors the originating account. (#1058) - Agents: propagate accountId into embedded runs so sub-agent announce routing honors the originating account. (#1058)
- Compaction: include tool failure summaries in safeguard compaction to prevent retry loops. (#1084) - Compaction: include tool failure summaries in safeguard compaction to prevent retry loops. (#1084)
- Daemon: include HOME in service environments to avoid missing HOME errors. (#1214) — thanks @ameno-.
- TUI: show generic empty-state text for searchable pickers. (#1201) — thanks @vignesh07. - TUI: show generic empty-state text for searchable pickers. (#1201) — thanks @vignesh07.
- Doctor: canonicalize legacy session keys in session stores to prevent stale metadata. (#1169) - Doctor: canonicalize legacy session keys in session stores to prevent stale metadata. (#1169)
- CLI: centralize CLI command registration to keep fast-path routing and program wiring in sync. (#1207) — thanks @gumadeiras. - CLI: centralize CLI command registration to keep fast-path routing and program wiring in sync. (#1207) — thanks @gumadeiras.

View File

@@ -1,6 +1,10 @@
import path from "node:path"; import path from "node:path";
import { describe, expect, it } from "vitest"; import { describe, expect, it } from "vitest";
import { buildMinimalServicePath, buildServiceEnvironment } from "./service-env.js"; import {
buildMinimalServicePath,
buildNodeServiceEnvironment,
buildServiceEnvironment,
} from "./service-env.js";
describe("buildMinimalServicePath", () => { describe("buildMinimalServicePath", () => {
it("includes Homebrew + system dirs on macOS", () => { it("includes Homebrew + system dirs on macOS", () => {
@@ -48,6 +52,7 @@ describe("buildServiceEnvironment", () => {
port: 18789, port: 18789,
token: "secret", token: "secret",
}); });
expect(env.HOME).toBe("/home/user");
if (process.platform === "win32") { if (process.platform === "win32") {
expect(env.PATH).toBe(""); expect(env.PATH).toBe("");
} else { } else {
@@ -75,3 +80,12 @@ describe("buildServiceEnvironment", () => {
} }
}); });
}); });
describe("buildNodeServiceEnvironment", () => {
it("passes through HOME for node services", () => {
const env = buildNodeServiceEnvironment({
env: { HOME: "/home/user" },
});
expect(env.HOME).toBe("/home/user");
});
});

View File

@@ -75,6 +75,7 @@ export function buildServiceEnvironment(params: {
(process.platform === "darwin" ? resolveGatewayLaunchAgentLabel(profile) : undefined); (process.platform === "darwin" ? resolveGatewayLaunchAgentLabel(profile) : undefined);
const systemdUnit = `${resolveGatewaySystemdServiceName(profile)}.service`; const systemdUnit = `${resolveGatewaySystemdServiceName(profile)}.service`;
return { return {
HOME: env.HOME,
PATH: buildMinimalServicePath({ env }), PATH: buildMinimalServicePath({ env }),
CLAWDBOT_PROFILE: profile, CLAWDBOT_PROFILE: profile,
CLAWDBOT_STATE_DIR: env.CLAWDBOT_STATE_DIR, CLAWDBOT_STATE_DIR: env.CLAWDBOT_STATE_DIR,
@@ -94,6 +95,7 @@ export function buildNodeServiceEnvironment(params: {
}): Record<string, string | undefined> { }): Record<string, string | undefined> {
const { env } = params; const { env } = params;
return { return {
HOME: env.HOME,
PATH: buildMinimalServicePath({ env }), PATH: buildMinimalServicePath({ env }),
CLAWDBOT_STATE_DIR: env.CLAWDBOT_STATE_DIR, CLAWDBOT_STATE_DIR: env.CLAWDBOT_STATE_DIR,
CLAWDBOT_CONFIG_PATH: env.CLAWDBOT_CONFIG_PATH, CLAWDBOT_CONFIG_PATH: env.CLAWDBOT_CONFIG_PATH,