Merge pull request #2662 from wbelt/fix/configurable-claimed-api-key-path

fix(openclaw-gateway): make claimedApiKeyPath configurable per agent
This commit is contained in:
Dotta
2026-04-07 09:31:14 -05:00
committed by GitHub
3 changed files with 17 additions and 0 deletions

View File

@@ -36,6 +36,7 @@ Request behavior fields:
- waitTimeoutMs (number, optional): agent.wait timeout override (default timeoutSec * 1000)
- autoPairOnFirstConnect (boolean, optional): on first "pairing required", attempt device.pair.list/device.pair.approve via shared auth, then retry once (default true)
- paperclipApiUrl (string, optional): absolute Paperclip base URL advertised in wake text
- claimedApiKeyPath (string, optional): path to the claimed API key JSON file read by the agent at wake time (default ~/.openclaw/workspace/paperclip-claimed-api-key.json)
Session routing fields:
- sessionKeyStrategy (string, optional): issue (default), fixed, or run

View File

@@ -320,6 +320,12 @@ function resolvePaperclipApiUrlOverride(value: unknown): string | null {
}
}
const DEFAULT_CLAIMED_API_KEY_PATH = "~/.openclaw/workspace/paperclip-claimed-api-key.json";
function resolveClaimedApiKeyPath(value: unknown): string {
return nonEmpty(value) ?? DEFAULT_CLAIMED_API_KEY_PATH;
}
function buildPaperclipEnvForWake(ctx: AdapterExecutionContext, wakePayload: WakePayload): Record<string, string> {
const paperclipApiUrlOverride = resolvePaperclipApiUrlOverride(ctx.config.paperclipApiUrl);
const paperclipEnv: Record<string, string> = {

View File

@@ -150,6 +150,16 @@ export function OpenClawGatewayConfigFields({
/>
</Field>
<Field label="Claimed API key path">
<DraftInput
value={eff("adapterConfig", "claimedApiKeyPath", String(config.claimedApiKeyPath ?? ""))}
onCommit={(v) => mark("adapterConfig", "claimedApiKeyPath", v || undefined)}
immediate
className={inputClass}
placeholder="~/.openclaw/workspace/paperclip-claimed-api-key.json"
/>
</Field>
<Field label="Session strategy">
<select
value={sessionStrategy}