--login / --logout / --whoami フラグ形式も引き続きエイリアスとして使用できます。
認証はオプトイン方式です。ポリシー、ダッシュボード、/audit ページ、その他すべてのローカル機能は、サインインの有無にかかわらず同じように動作します。ログイン機能が存在するのは、安定したアカウント情報を必要とする機能(現時点では再監査リマインダー、今後さらに追加予定)のためです。
サインインフロー
~/.failproofai/auth.json(パーミッション 0600)が作成されます。同じセッションがアプリ内ダッシュボードにも反映され、/audit ページで [ set a reminder ] をクリックするとサインイン済みとして認識されます。
CLIを使用しないユーザー向けに、ダッシュボードの /audit ページでも同じフローをモーダルダイアログとして提供しています。
サインアウト
~/.failproofai/auth.json を削除します。APIサーバーに接続できない場合でも、ローカルファイルは削除されます。ローカルでのサインアウト操作が常に優先されます。
アカウント確認
<email> (<user 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ビットのランダム文字列です。リフレッシュトークンの再利用はサーバー側で検出され、そのユーザーのすべてのセッションが無効化されます。
環境変数
| 変数 | デフォルト値 | 用途 |
|---|---|---|
FAILPROOF_API_URL | https://api.befailproof.ai | APIサーバーのベースURLを上書きします。セルフホスト型APIサーバーに対してローカル開発を行う際に便利です。 |
FAILPROOFAI_AUTH_DIR | ~/.failproofai | auth.json の保存場所を上書きします。主にテスト用途です。 |
トラブルシューティング
「APIサーバーに接続できませんでした」 — CLIがFAILPROOF_API_URL へのTCP接続を開けません。ネットワーク環境を確認するか、セルフホスト型APIサーバーを使用している場合は FAILPROOF_API_URL を設定してください。
「レート制限」 — 15分以内に同じメールアドレス(5回/メール)またはIPアドレス(20回/IP)からのログイン試行が多すぎる場合、または同じメールアドレスへの前回のリクエストから30秒間の再送信クールダウン中です。エラーメッセージには再試行可能になるまでの時間が秒単位で含まれます。
コードが拒否された — OTPが誤っているか、期限切れか、または5回の入力ミスによるロックアウトが発生しています。failproofai auth login を再実行して新しいコードをリクエストしてください。
