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)
fi2>/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」から確認・削除できる