GitHub Actionsの環境変数名に “OPENAI_API_KEY” が使えない問題
はじめに
先日、GitHub Actions上でPythonスクリプトを自動実行するワークフローを構築していました。 内容としては、Slack APIからチャンネルログを取得し、OpenAI API(gpt-5-mini)で要約を生成し、Slackに投稿するというものです。
ローカル環境では問題なく動作していたのですが、Actionsで実行すると謎のエラーが続出。 調べていくうちに、「GitHub Actionsでは環境変数名に OPENAI_API_KEY を使うと値が壊れる」 という、ちょっと意外な落とし穴に辿り着きました。
現象
ワークフローの定義は次のようなシンプルなものです。
name: Weekly Hagakure
on:
workflow_dispatch:
schedule:
- cron: "0 3 * * 0"
jobs:
run:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Install deps
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run weekly_hagakure_bot
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
python weekly_hagakure_bot.py
Pythonコード自体、ローカルでは問題なく動作していました。ライブラリもrequirements.txtで共有し、定時になれば動作してくれると考えていたのですが、いざ実行時刻になるとエラーを返していました。
エラーメッセージを読んでいくと、以下の部分に問題がありそうです。
httpx.LocalProtocolError: Illegal header value b'***'
どうもOpenAIのAPIキーが環境変数として正しく設定されていないと言っているようなので、キーの見直し、GitHub actionsのシークレットの設定を見直してみました。が、どうも問題なさそう。。。
結論
環境変数名が“OPENAI_API_KEY”だからだめだった。
以下GPT-5の回答
””” GitHub Actionsにはセキュリティ機構として、 特定の文字列を含む環境変数を自動的にマスク・置換する機能 があります。
とくに "sk-" や "xoxb-" のようなシークレットキーのプレフィックスは ログ出力だけでなく、プロセス内の値渡し時にも "***" に置き換えられる ケースがあります。
そのため、 以下のように OPENAI_API_KEY という環境変数名を使うと、 GitHub内部で「シークレット扱い」として値が改変されてしまうのです。 ”””
とのこと。
要するに、「OPENAI_API_KEY 」という環境変数名は秘匿性が高そうなため、自動的にコードの処理時点においても「***」に変換してくれるのだと。
解決方法
環境変数名を変える
解決方法はシンプルで、 OPENAI_API_KEY 以外の名前にする ことでした。
今回は環境変数名を
MY_OPENAI_KEY
に変更してやることで無事に実行されました。
しかしまあ、普通に一番使いそうな変数名ですので、まさかここに問題があると思わず。 エラーをGPT−5に聞いてもしばらくの間 「環境変数が設定されてないと思うよ」としか言わないので、結構ハマりました。
GitHub actionsで汎用的な環境変数名を使っててうまくいかない時は、ここを疑ってみるのもありのようです。