dotfilesをGitHubで管理している場合、.zshrcにAPIトークンを平文で書くと漏洩リスクがある。macOS Keychainに保存して security コマンドで読み出す方法が安全。

Keychainに保存

security add-generic-password -a "$USER" -s "サービス名" -w "トークン値"
  • -a : アカウント名($USERでOK)
  • -s : サービス名(キーになる。例: HF_TOKEN, ANTHROPIC_API_KEY
  • -w : パスワード(トークン値)

トークン値をターミナル履歴に残さない入力は terminal-secret-input を参照。

.zshrcで読み込む

# macOSの場合のみ実行(他環境でエラーにならないよう)
if [[ "$OSTYPE" == "darwin"* ]]; then
    export HF_TOKEN=$(security find-generic-password -a "$USER" -s "HF_TOKEN" -w 2>/dev/null)
fi

2>/dev/null はKeychainに該当エントリがない場合のエラー出力を抑制する。

セットされているか確認する(値を表示しない)

[[ -n "$HF_TOKEN" ]] && echo "True" || echo "False"

SSH経由で利用する場合

リモートからMacにSSHしてインタラクティブシェルを使う場合、Keychainがロックされていると security コマンドが空を返す。事前に解錠が必要。

security unlock-keychain ~/Library/Keychains/login.keychain-db

メリット

  • dotfilesリポジトリにトークン本体が含まれない
  • Keychain自体はmacOSのログインパスワードで保護される
  • GUIでは「キーチェーンアクセス.app」から確認・削除できる