暗号化された認証情報を「credential:」という規約に従って環境変数(プログラムの実行環境に設定される変数)に渡します。 **次のような場合に使用:** - LLM(大規模言語モデル)プロバイダーのAPIキー(ANTHROPIC_API_KEY、OPENAI_API_KEYなど)を設定する場合 - 暗号化された認証情報から取得すべき環境変数を扱う場合
Wire encrypted credentials to environment variables using the credential: convention. Use when setting up LLM provider keys (ANTHROPIC_API_KEY, OPENAI_API_KEY) or any env var that should come from encrypted credentials.
次のような場合に使用:
ANTHROPIC_API_KEY または OPENAI_API_KEY をセットアップするprocess.env の変数に自動的に紐付ける.env シークレットから暗号化クレデンシャルへ移行するcredential: 規則値が credential: で始まる環境変数は、Worker 起動時に暗号化クレデンシャルから解決されます。フォーマットは以下の通りです:
ENV_VAR_NAME=credential:<dot.path>
.env の例# これらは config/credentials.yml.enc から自動的に解決される
ANTHROPIC_API_KEY=credential:anthropic.api_key
OPENAI_API_KEY=credential:openai.api_key
# 任意のクレデンシャルパスが使用可能
MY_SERVICE_TOKEN=credential:my_service.token
DATABASE_URL=credential:postgres.url
config/credentials.yml.enc)anthropic:
api_key: sk-ant-... # → ANTHROPIC_API_KEY に解決される
openai:
api_key: sk-... # → OPENAI_API_KEY に解決される
my_service:
token: tok_live_... # → MY_SERVICE_TOKEN に解決される
postgres:
url: postgres://... # → DATABASE_URL に解決される
.env を読み込む — ANTHROPIC_API_KEY = "credential:anthropic.api_key"@outputai/credentials をインポート)runStartupHooks() を呼び出す — resolveCredentialRefs() が実行されるresolveCredentialRefs() が process.env をスキャンして credential: プレフィックスの値を検索するANTHROPIC_API_KEY が process.env 上で "sk-ant-..." になる_env セクションクレデンシャルファイルでは、_env セクションにマッピングを直接宣言することもできます。
新規プロジェクトはこの設定があらかじめ構成された状態でスキャフォールドされます:
anthropic:
api_key: sk-ant-...
openai:
api_key: sk-...
_env:
ANTHROPIC_API_KEY: anthropic.api_key
OPENAI_API_KEY: openai.api_key
注意:
_envセクションはメタデータ専用です。意図されたマッピングを文書化するものであり、解決処理を駆動するものではありません。解決処理は.env内のcredential:値によって駆動されます。両者を常に同期させておいてください。
実際の環境変数の値は常に優先されます。ANTHROPIC_API_KEY がすでに credential: 以外の値(シェルや CI シークレットなど)に設定されている場合、その値が 上書きされることはありません:
# 実際の値 — resolveCredentialRefs によって変更されない
ANTHROPIC_API_KEY=sk-ant-real-override
# プレースホルダー — 起動時に置き換えられる
ANTHROPIC_API_KEY=credential:anthropic.api_key
これにより、ファイルを変更することなく、デプロイ時に任意のクレデンシャル参照を上書きできます。
最初の解決が完了すると、ANTHROPIC_API_KEY には実際の API キーの文字列が格納され、credential: で始まる状態ではなくなります。
その後 resolveCredentialRefs() を再度呼び出しても、該当変数に対しては何も行われません(no-op)。
npx output credentials init
npx output credentials edit # anthropic.api_key、openai.api_key を追加
.env を更新する# プレーンテキストのシークレットをクレデンシャル参照に置き換える
ANTHROPIC_API_KEY=credential:anthropic.api_key
OPENAI_API_KEY=credential:openai.api_key
Worker を起動し、以下のログ行が出力されることを確認してください:
Startup hooks resolved env vars {"vars":["ANTHROPIC_API_KEY","OPENAI_API_KEY"]}
このログ行が表示されれば、クレデンシャルは正しく紐付けられています。
Worker コンテキスト外で resolveCredentialRefs() を呼び出す必要がある場合:
import { resolveCredentialRefs } from '@outputai/credentials';
// 解決された環境変数名の配列を返す
const resolved = resolveCredentialRefs();
console.log('Resolved:', resolved);
// → ["ANTHROPIC_API_KEY", "OPENAI_API_KEY"]
config/credentials.yml.enc に対象のクレデンシャルパスが含まれている.env で関連する環境変数に credential:<path> 形式の値が使用されているStartup hooks resolved env vars が表示されるANTHROPIC_API_KEY が正しく設定されていることを確認)output-credentials-init — 暗号化クレデンシャルファイルを作成するoutput-credentials-edit — クレデンシャルの値を追加・更新するoutput-dev-credentials — クレデンシャルシステムの完全なリファレンスANTHROPIC_API_KEY or OPENAI_API_KEY from encrypted credentialsprocess.env variable automatically.env secrets to encrypted credentialscredential: ConventionAny env var whose value starts with credential: is resolved from encrypted credentials at worker startup. The format is:
ENV_VAR_NAME=credential:<dot.path>
.env# These are resolved automatically from config/credentials.yml.enc
ANTHROPIC_API_KEY=credential:anthropic.api_key
OPENAI_API_KEY=credential:openai.api_key
# Any credential path works
MY_SERVICE_TOKEN=credential:my_service.token
DATABASE_URL=credential:postgres.url
config/credentials.yml.enc)anthropic:
api_key: sk-ant-... # → resolves ANTHROPIC_API_KEY
openai:
api_key: sk-... # → resolves OPENAI_API_KEY
my_service:
token: tok_live_... # → resolves MY_SERVICE_TOKEN
postgres:
url: postgres://... # → resolves DATABASE_URL
.env via dotenv — ANTHROPIC_API_KEY = "credential:anthropic.api_key"@outputai/credentials)runStartupHooks() — resolveCredentialRefs() runsresolveCredentialRefs() scans process.env for credential: prefix valuesANTHROPIC_API_KEY is now "sk-ant-..." in process.env_env Section in Credentials YAMLThe credentials file can also declare the mapping directly in an _env section. New projects scaffold with this pre-configured:
anthropic:
api_key: sk-ant-...
openai:
api_key: sk-...
_env:
ANTHROPIC_API_KEY: anthropic.api_key
OPENAI_API_KEY: openai.api_key
Note: The
_envsection is metadata only — it documents the intended mapping but does not drive resolution. Resolution is driven by thecredential:values in.env. Keep both in sync.
Real env var values always take precedence. If ANTHROPIC_API_KEY is already set to a non-credential: value (e.g. from the shell or a CI secret), it is never overwritten:
# Real value — never touched by resolveCredentialRefs
ANTHROPIC_API_KEY=sk-ant-real-override
# Placeholder — gets replaced at startup
ANTHROPIC_API_KEY=credential:anthropic.api_key
This means you can override any credential ref at deploy time without changing files.
After the first resolution, ANTHROPIC_API_KEY contains the real API key string — it no longer starts with credential:. Subsequent calls to resolveCredentialRefs() are no-ops for that variable.
npx output credentials init
npx output credentials edit # Add anthropic.api_key, openai.api_key
.env# Replace plaintext secrets with credential references
ANTHROPIC_API_KEY=credential:anthropic.api_key
OPENAI_API_KEY=credential:openai.api_key
Start the worker and look for the log line:
Startup hooks resolved env vars {"vars":["ANTHROPIC_API_KEY","OPENAI_API_KEY"]}
If the log line appears, credentials are wired correctly.
If you need to call resolveCredentialRefs() outside of a worker context:
import { resolveCredentialRefs } from '@outputai/credentials';
// Returns array of env var names that were resolved
const resolved = resolveCredentialRefs();
console.log('Resolved:', resolved);
// → ["ANTHROPIC_API_KEY", "OPENAI_API_KEY"]
config/credentials.yml.enc contains the target credential paths.env uses credential:<path> values for the relevant env varsStartup hooks resolved env varsANTHROPIC_API_KEY is set correctly)output-credentials-init — Create the encrypted credentials fileoutput-credentials-edit — Add/update credential valuesoutput-dev-credentials — Full credentials system reference原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。