问题现象
使用 openclaw gateway run 前台运行时一切正常,但切换到 openclaw gateway start(systemd 后台服务)后报错:
HTTP 401: Invalid API key
明明配置文件里 API key 写得好好的,为什么会这样?
原因分析
run 与 start 的区别在于环境变量继承方式:
run:前台运行,直接继承当前 Shell 的环境变量。start:通过 systemd 启动后台服务,环境变量处于隔离状态。
当前 Shell 中设置了如下环境变量:
export ANTHROPIC_BASE_URL=https://api.aigocode.com
export ANTHROPIC_AUTH_TOKEN=sk-xxx...
gateway run 能继承这些变量,因此可用。但 systemd 服务启动时,这些变量不存在。虽然 openclaw.json 配置文件中写了 apiKey,但 OpenClaw 优先读取环境变量。当环境变量缺失时,可能默认调用 Anthropic 官方 API,导致配置文件中的 Key 验证失败返回 401。
解决方案
将环境变量添加到 systemd service 文件中。
Step 1:找到 service 文件
cat ~/.config/systemd/user/openclaw-gateway.service
Step 2:在 [Service] 部分添加环境变量
[Service]
# ... 其他配置 ...
Environment=ANTHROPIC_BASE_URL=https://api.aigocode.com
Environment=ANTHROPIC_AUTH_TOKEN=sk-你的 key
[Install]
WantedBy=default.target
⚠️ 注意:Environment 必须放在 [Service] 部分内,不能放在 [Install] 后面,否则 systemd 会忽略该配置。
Step 3:重新加载并重启服务
systemctl --user daemon-reload
systemctl --user restart openclaw-gateway
踩坑记录
若使用 >> 追加环境变量到文件末尾,可能会将其加到 [Install] 部分之后。systemd 日志会提示:
Unknown key name section , ignoring.

