OpenClaw環境変数の設定ガイド:読み込み順序とトラブルシューティング
開発環境のセットアップで、環境変数の設定に苦労したことはありませんか?ローカルのターミナルでは完璧に動いているのに、いざサービスとしてバックグラウンドで動かそうとすると設定が反映されない、というのはよくある悩みです。
OpenClaw で環境変数がどのように扱われるかを理解して、スムーズにセットアップを進めましょう。
OpenClaw がどのように環境変数を読み込み、管理するかについて説明します。
OpenClaw はどのように環境変数を読み込みますか?
Section titled “OpenClaw はどのように環境変数を読み込みますか?”OpenClaw は、親プロセス(shell, launchd/systemd, CI など)から環境変数を読み込みます。さらに、以下のファイルも追加で読み込みます:
- カレントディレクトリにある
.env ~/.openclaw/.env(別名$OPENCLAW_STATE_DIR/.env)にあるグローバルなフォールバック用.env
どちらの .env ファイルも、既存の環境変数を上書きすることはありません。
また、config 内でインラインの環境変数を定義することもできます(プロセスの環境変数に存在しない場合のみ適用されます)。
{ env: { OPENROUTER_API_KEY: "sk-or-...", vars: { GROQ_API_KEY: "gsk-..." } }}「サービス経由で Gateway を起動したら環境変数が消えてしまった」そんな時は?
Section titled “「サービス経由で Gateway を起動したら環境変数が消えてしまった」そんな時は?”2つの一般的な解決策があります:
-
足りないキーを
~/.openclaw/.envに記述してください。これにより、サービスがシェルの環境変数を引き継がない場合でも、正しく読み込まれるようになります。 -
shell import を有効にします(オプトインの便利な機能です):
{env: {shellEnv: {enabled: true,timeoutMs: 15000}}}
これはログインシェルを実行し、不足している期待されるキーのみをインポートします(上書きはしません)。環境変数で設定する場合は、OPENCLAW_LOAD_SHELL_ENV=1 および OPENCLAW_SHELL_ENV_TIMEOUT_MS=15000 が対応します。
COPILOT_GITHUB_TOKEN を設定したのに、モデルのステータスが “Shell env: off” になるのはなぜですか?
Section titled “COPILOT_GITHUB_TOKEN を設定したのに、モデルのステータスが “Shell env: off” になるのはなぜですか?”openclaw models status は、shell env import が有効かどうかを報告するものです。“Shell env: off” は、環境変数が欠けているという意味ではありません。単に OpenClaw がログインシェルを自動的に読み込まない設定になっていることを示しています。
Gateway をサービス(launchd/systemd)として実行している場合、シェルの環境変数は引き継がれません。
以下のいずれかの方法で解決してください:
- トークンを
~/.openclaw/.envに記述する - shell import を有効にする (
env.shellEnv.enabled: true) - config の
envブロックにトークンを追加する
設定後、Gateway を再起動してください:
openclaw gateway restartopenclaw models statusCopilot トークンは COPILOT_GITHUB_TOKEN(または GH_TOKEN / GITHUB_TOKEN)から読み込まれます。
次のステップ
Section titled “次のステップ”OpenClaw Expert
まだ解決しませんか?
このページで解決しない場合は、OpenClaw Expertに直接質問してください。