--login / --logout / --whoami フラグ形式も引き続きエイリアスとして使用できます。
認証はオプトイン方式です。ポリシー、ダッシュボード、/audit ページ、その他すべてのローカル機能は、サインインの有無にかかわらず同じように動作します。ログイン機能は、安定したアカウント情報を必要とする機能(現時点では再監査リマインダー、今後追加予定のもの)の基盤として用意されています。
サインインフロー
~/.failproofai/auth.json(パーミッション 0600)が作成されます。同じセッションがアプリ内ダッシュボードにも反映され、/audit の [ set a reminder ] をクリックした際にサインイン済みとして認識されます。
CLIを使用しないユーザー向けに、ダッシュボードの /audit ページでも同じフローをモーダルダイアログとして利用できます。
サインアウト
~/.failproofai/auth.json を削除します。APIサーバーに接続できない場合でも、ローカルファイルは削除されます。ローカルでのログアウト操作が常に優先されます。
アカウント確認
<メールアドレス> (<ユーザーUUID>) を表示してコード0で終了し、サインインしていない場合は not signed in を表示してコード1で終了します。アクセストークンの有効期限が1分以内に迫っている場合は、バックグラウンドで自動的に更新されます。
再監査リマインダーの設定
/audit ページで [ set a reminder ] をクリックする(またはボタンが表示するモーダルからサインインする)と、ダッシュボードが ~/.failproofai/next-audit.json に小さなファイルを作成します。
auth.json と同様に 0600 パーミッションで作成されます。
ダッシュボードの /api/auth/reminder エンドポイントは GET(読み取り)、POST(設定・再スケジュール)、DELETE(削除)をサポートし、有効なセッションが必要です。
~/.failproofai/auth.json の内容
0600 パーミッション(オーナーのみ読み書き可能)で作成されます。アクセストークンは有効期限1時間のHS256 JWTで、リフレッシュトークンはサーバーが SHA-256(token) として保存する不透明な256ビットのランダム文字列です。リフレッシュトークンの使い回しはサーバー側で検出され、そのユーザーのすべてのセッションが無効化されます。
環境変数
完全な一覧については 環境変数 を参照してください。
トラブルシューティング
「Could not reach the api-server」 — CLIがFAILPROOF_API_URL へのTCP接続を確立できません。ネットワーク接続を確認するか、セルフホスト型APIサーバーを使用している場合は FAILPROOF_API_URL を設定してください。
「Rate limited」 — 15分間のウィンドウ内で、同一メールアドレスからのログイン試行が上限(メール5回、IP20回)を超えたか、同一メールアドレスへの再送信クールダウン(30秒)中です。エラーメッセージには、秒単位の再試行可能時間が含まれます。
コードが拒否された — OTPが誤っているか、有効期限が切れているか、5回の誤入力によるロックアウトが発生しています。failproofai auth login を再実行して、新しいコードを取得してください。
