Appearance
密钥管理问题(SecretRef)
编号格式
#NNNNN对应 GitHub issue,可直接搜索去重。
SecretRef 渠道 token 启动正常但回复时失效
来源:GitHub #45838(2026-03)
现象:使用 exec 类型 SecretRef 配置 Slack/Telegram 渠道 token(如从 macOS Keychain 读取),Gateway 启动成功、渠道连接正常,但收到消息回复时报错:
channels.slack.accounts.default.botToken: unresolved SecretRef "exec:keychain_slack_bot:value".
Resolve this command against an active gateway runtime snapshot before reading it.原因:SecretRef 在 Gateway 启动时解析并缓存,但回复发送路径读取的是原始配置对象(含未解析的 SecretRef 占位符)而非运行时快照。若配置被热重载(文件变动触发),新的配置对象未重走解析步骤,导致 token 变为未解析状态。
解决方法:
方案 1(推荐):改用环境变量,避免热重载问题:
json5
{
channels: {
slack: {
botToken: "${SLACK_BOT_TOKEN}",
appToken: "${SLACK_APP_TOKEN}"
}
}
}方案 2:禁用配置文件热重载:
json5
{
gateway: {
watchConfig: false
}
}方案 3:将 token 直接明文写入 openclaw.json,权限设为 600:
bash
chmod 600 ~/.openclaw/openclaw.json注意:此问题影响所有使用 exec/keychain SecretRef 的渠道,包括 Slack、Telegram、Discord。