import fs from "node:fs"; import os from "node:os"; import path from "node:path"; import dotenv from "dotenv"; import { resolveConfigDir } from "../utils.js"; import { resolveRequiredHomeDir } from "./home-dir.js"; import {
isDangerousHostEnvOverrideVarName,
isDangerousHostEnvVarName,
normalizeEnvVarKey,
} from "./host-env-security.js";
// Block endpoint redirection for any service without overfitting per-provider names. // `_HOMESERVER` covers Matrix's per-account scoped keys (MATRIX_<ACCOUNT>_HOMESERVER) // in addition to the bare MATRIX_HOMESERVER listed above. const BLOCKED_WORKSPACE_DOTENV_SUFFIXES = ["_API_HOST", "_BASE_URL", "_HOMESERVER"]; const BLOCKED_WORKSPACE_DOTENV_PREFIXES = [ "ANTHROPIC_API_KEY_", "CLAWHUB_", "OPENAI_API_KEY_", // Workspace .env is untrusted; reserve the full OpenClaw runtime namespace // for shell/global config so new OPENCLAW_* controls are fail-closed by default. "OPENCLAW_", "OPENCLAW_CLAWHUB_", "OPENCLAW_DISABLE_", "OPENCLAW_SKIP_", "OPENCLAW_UPDATE_",
];
function shouldBlockWorkspaceRuntimeDotEnvKey(key: string): boolean { return isDangerousHostEnvVarName(key) || isDangerousHostEnvOverrideVarName(key);
}
function shouldBlockRuntimeDotEnvKey(key: string): boolean { // The global ~/.openclaw/.env (or OPENCLAW_STATE_DIR/.env) is a trusted // operator-controlled runtime surface. Workspace .env is untrusted and gets // the strict blocklist, but the trusted global fallback is allowed to set // runtime vars like proxy/base-url/auth values. void key; returnfalse;
}
// Then load global fallback: ~/.openclaw/.env (or OPENCLAW_STATE_DIR/.env), // without overriding any env vars already present.
loadGlobalRuntimeDotEnvFiles({ quiet });
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.