VTRyo Blog

一歩ずつ前に進むブログ

1Password CLIの環境(ベータ)で環境変数を注入する方法

.envに値を書き込みたくないので、1Password CLIを使ってシークレットを管理する。

1Password CLIを使った方法はいくつかブログとして存在するのだが、envファイルを仮想マウントしたり、Vaultに登録してreadする方法だ。今回の意図とは異なるので参考として以下に掲載しておく。

dev.classmethod.jp

zenn.dev

ベータ版の環境に関する公式ドキュメントを読むも、少し情報不足感があって困った。

developer.1password.com

※2026/04/01現在、この環境はベータ版である。

目的と背景

  • .env内に値を書き込みたくない。Claude には.envの読み込みを禁止しているが、念のための保険
  • 1PassowordのVaultは開発以外の情報が多いので、Keyを登録したくない。よって環境(ベータ)を使う
    • op read op:// のような書き方をしない
  • そもそも.envファイルを作成しなくていいならそれが一番良い

準備

1Password CLI

まず1Password CLIのベータ版をダウンロードする必要がある。すでにHomebrew などでStable版がインストールされている場合は、アンインストールしてベータ版を入れ直す。

公式によると2.33.0-beta.02以降が必要。

https://app-updates.agilebits.com/product_history/CLI2#beta

developer.1password.com

次に、開発者タブで環境の設定をする。「環境を表示」を押すと、新しい環境という名の空間を作れる。

1Passoword

任意の名前を付けたら、変数を設定する。すでに.envがある人はインポートしても良い。

環境の管理から、IDをコピーする。

1Password CLIでの操作(シークレット値の確認方法)

公式ドキュメントを読むも、意図した動作が取れず困っていた。結局 op run --helpにこの世のすべてが書いてあった。

  • op run --environment <ENV_UUID> -- printenv <ENV_NAME>

また、標準出力や標準エラーではマスキングされるので、表示したい場合は--no-maskingをつける(プログラムが読み取るだけなら不要)。

  • op run --no-masking --environment <ENV_UUID> -- printenv <ENV_NAME>

アプリケーション起動・注入方法

op run --environment <ENV_UUID> -- <Command> で一括注入できる。便利。

ということで、docker compose upでも next devでもこれで環境変数が利用できるようになった。