03.
— Section 3
Credentials
macOS Keychain
パスワードはディスクに触れません。
jmapcli はシークレットをディスクに保存しません。パスワード(またはベアラートークン)は macOS のログインキーチェーンに格納されます。アカウントファイル — ~/.config/jmapcli/config.json、モード 0600 — にはサーバー URL・ユーザー名・デフォルトフラグのみが記録されます。ターミナルからキーチェーンを初めて使う場合でも、ワークフロー全体は組み込みの security コマンド 3 つで完結します。
1 · シークレットを保存して読み返す。 macOS が値の入力を求めるため、シークレットがコマンドライン上に入力されることも、画面に表示されることも、シェル履歴に書き込まれることもありません。
# store it — you’re prompted for the secret, nothing echoes
$ security add-generic-password -U -s jmap-password -a you@example.com -l "Boogie JMAP password" -w
# read it back at any time
$ security find-generic-password -s jmap-password -a you@example.com -w
# remove it
$ security delete-generic-password -s jmap-password -a you@example.com
- -s
- service — jmapcli が参照するサービス名: パスワードの場合は jmap-password、ベアラートークン(例: Fastmail)の場合は jmap-token を設定します。使用する方のみ設定してください。
- -a
- account — メールアドレス(jmapcli に渡すユーザー名と同じもの)。
- -l
- label — キーチェーンアクセス App に表示される名前。-U を指定すると既存の項目を上書き更新します。
- -w
- 値を指定しない場合 — シークレットの入力を促します。これにより ~/.zsh_history やプロセスリストへの漏洩を防ぎます。
2 · jmapcli にサーバーを登録する。 アカウントを一度登録するだけで、シークレットは先ほど保存したキーチェーン項目から直接取得されるため、コマンドラインに現れることはありません。
$ jmapcli login --url https://mail.example.com --username you@example.com \
--password "$(security find-generic-password -s jmap-password -a you@example.com -w)"
# token auth: swap --password for --token (and store under jmap-token above)
$ jmapcli list # from here on, every command reads the Keychain for you
3.1
履歴にも、ログにも、AI のコンテキストにも残らない
シークレットがキーチェーンに格納されると、日常的なコマンド(list、send、draft、sync)はパスワードを持ち歩かないため、~/.zsh_history やプロセス一覧、CI ログに記録されることがありません。これにより jmapcli はターミナル AI ツールからも安全に使用できます — エージェントに渡るのは JMAP クライアントだけで、シークレットは渡されません。
— zsh
CI · agents
3.2
パスワードの変更とサインアウト
パスワードを変更した場合は、security add-generic-password … -w の行を再実行してください — -U によりその場で上書きされます。アカウントを削除するには jmapcli logout を実行すると、設定エントリとキーチェーンのシークレットを一度に削除できます(--all ですべてのアカウントを消去)。
— rotate
logout
3.3
Mac ごとに独立して管理する設計
ログインキーチェーンは iCloud を通じて同期されません — これは意図的な境界であり、入力した Mac からパスワードが外に出ることはありません。security の手順は Mac ごとに一度だけ実行してください。config.json はシークレットを含まないため、同期されたホームフォルダに置いても問題ありません。
— per
machine