miyao
macOS の Keychain に APIキーを安全に保存・取得するための CLI ツールです。
名前は「秘钥 mìyào」(秘密鍵)に由来します。
特徴
- ログインキーチェーンに保存(汎用パスワード項目、サービス名
dev.local.miyao)
- キーの値をコマンド引数に渡さない設計(
ps やシェル履歴への平文残留を防止)
- 値は対話入力(エコーなし)またはパイプで受け取る
- iCloud キーチェーンには同期しない(
SynchronizableNo)
必要環境
- macOS(go-keychain が darwin 専用のため)
- Xcode Command Line Tools(cgo 経由で Security.framework を呼ぶため)
- Go
インストール
go install github.com/hajime-kodaira/miyao@latest
またはソースからビルド:
git clone https://github.com/hajime-kodaira/miyao.git
cd miyao
go build -o miyao .
使い方
保存: miyao set <name>
# 対話入力(入力内容は表示されません)
miyao set openai
# パイプ入力(クリップボードから渡す例)
pbpaste | miyao set openai
同じ名前で再度 set すると上書きされます(登録しました / 更新しました で区別表示)。
注意: echo "sk-xxx" | miyao set openai はシェル履歴に平文が残るため避けてください。
対話入力を使うか、以下のように一時変数で渡す方法を推奨します:
read -s "KEY?API key: " && printf '%s' "$KEY" | miyao set openai; unset KEY
取得: miyao get [--copy|-c] <name>
miyao get openai # 標準出力に表示(パイプで他コマンドに渡せます)
miyao get -c openai # クリップボードへコピー(画面には表示しません)
一覧: miyao list(ls)
miyao list
削除: miyao delete <name>(rm)
miyao delete openai
終了コード
| コード |
意味 |
| 0 |
成功 |
| 1 |
実行時エラー(キー未存在・Keychain エラー等) |
| 2 |
コマンド引数の誤り(usage を表示) |
トラブルシューティング
ビルドのたびに Keychain の許可ダイアログが出る
開発中はバイナリのアドホック署名がビルドごとに変わるため、
「miyao がキーチェーンにアクセスしようとしています」という確認が繰り返し出ることがあります。
対策はいずれかです:
- ダイアログで「常に許可」を選ぶ
- 固定の自己署名証明書で署名を安定させる:
codesign -s <証明書名> ./miyao
キーチェーンアクセス.app で中身を確認したい
検索欄に dev.local.miyao と入力すると、miyao が保存した項目だけ絞り込めます。
ライセンス
LICENSE を参照してください。