0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Copilot CLI からOpenAI APIキーを参照する方法

0
Last updated at Posted at 2026-04-06

はじめに

Copilot CLIは親プロセスで設定された環境変数のうち、OPENAI_API_KEYなど一部の環境変数を読むことができません。
このため、これらのAPIキーを使ったコードの動作確認をcopilotに行わせることが難しいです。
そこで、copilot-cliがOpneAI APIキーを使えるようにする方法を検討しました。

注意:aiにどこまでの情報を見せるかは各自の責任でご判断ください

環境

  • 親プロセス(OS): ubuntu 24.04のbashターミナル
  • Copilot CLIのバージョン: 1.0.10

問題

通常、親プロセスの環境変数はCopilot CLIから参照できますが、なぜかOPENAI_API_KEYは参照できないようです。

以下のようにして確かめられます。

まず親プロセス(copilotコマンドを実行するubuntuのターミナル)で検証用の環境変数をexportします。

export FOO=BAR # 通常の環境変数
export OPENAI_API_KEY=dummy

適当なフォルダでcopilotを起動します。

mkdir env-test
cd env-test
copilot

copilotのbashモード(!を先頭につける)で環境変数を表示させてみます。

!echo $FOO # BARが出力
!echo $OPENAI_API_KEY # No Contentが出力

環境変数FOOはcopilotのbashでも読めていますが、OPENAI_API_KEYは読めていないことがわかります。
またOPENAI_API_KEY以外だと、ANTHROPIC_API_KEYも読めないようです。
GEMINI_API_KEYやDEEPSEEK_API_KEYは読めていました。

echoだけでなく、pythonスクリプトからもOPENAI_API_KEYは読めません。
試しに、環境変数を読み取るpythonスクリプトを作成します。

read_env.py
import os
print("$FOO:", os.getenv("FOO"))
print("$OPENAI_API_KEY:", os.getenv("OPENAI_API_KEY"))

copilot内で実行すると、FOOのみ表示され、OPEANI_API_KEYは存在しないことになっています。

!uv run read_env.py
$FOO: BAR
$OPENAI_API_KEY: None

軽く検索した範囲では、「copilotがOPENAI_API_KEYを参照できない」という仕様は確認できませんでした。筆者の環境特有の問題の可能性もありますが、参照できないキーの種類的に、開発者の意図がありそうな気もします。

対策

1. 毎回exportする

bash実行前に必ず必要な環境変数をexportすることで、そこでexportした環境変数を読むことができます。

copilotのbashモード(先頭にエクスクラメーション)で以下を実行すると、dummyと出力されます。

!export OPENAI_API_KEY=dummy && echo $OPENAI_API_KEY

複数キーを読み込む場合は.bashrc的なファイルを読ませればよいです。
sourceは使えなかったので.で読み込ませます。

!. ~/.bashrc && echo $OPENAI_API_KEY

運用時は、copilot-instructions.mdに毎回.bashrcを読むよう指示を書きます。


2. dotenvを使う

スクリプトから環境変数を読むのであれば、スクリプト内で.envをロードしてもOKです。
pythonだと以下のような感じです。

.envファイルを作ります。

.env
OPENAI_API_KEY=dummy

.envを扱うライブラリをaddし、スクリプトに読み込む処理を追加します。

uv add python-dotenv
read_env..py
import os
import dotenv
dotenv.load_dotenv()

print("$FOO:", os.getenv("FOO"))
print("$OPENAI_API_KEY:", os.getenv("OPENAI_API_KEY"))

実行すると.envの内容を読めていることがわかります。

!uv run read_env.py
$FOO: BAR
$OPENAI_API_KEY: dummy

プロンプトで毎回.bashrcを読む指示を書かなくて良いので、多少スマートかもしれませんが、.envファイルをリポジトリ内で管理することになるので、セキュリティ的には若干不安です。
.envをreadできないようにcopilot-cliの設定を調整すると良いかもしれません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?