> ## Documentation Index
> Fetch the complete documentation index at: https://docs.befailproof.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# サインイン

> CLIからFailproofAIにサインインして、リマインダーやパーソナライズされた機能を有効にする

```bash theme={null}
failproofai auth login    # メール + ワンタイムコード
failproofai auth logout   # このセッションを無効化
failproofai auth whoami   # サインイン中のアカウントを表示
```

後方互換性のため、従来の `--login` / `--logout` / `--whoami` フラグ形式も引き続きエイリアスとして使用できます。

認証はオプトイン方式です。ポリシー、ダッシュボード、`/audit` ページ、その他すべてのローカル機能は、サインインの有無にかかわらず同じように動作します。ログイン機能は、**安定したアカウント情報を必要とする**機能（現時点では再監査リマインダー、今後追加予定のもの）の基盤として用意されています。

## サインインフロー

```bash theme={null}
failproofai auth login
```

メールアドレスを入力するよう促され、そのアドレスに6桁のワンタイムコードが送信されます。コードを入力して認証に成功すると、`~/.failproofai/auth.json`（パーミッション `0600`）が作成されます。同じセッションがアプリ内ダッシュボードにも反映され、`/audit` の `[ set a reminder ]` をクリックした際にサインイン済みとして認識されます。

CLIを使用しないユーザー向けに、ダッシュボードの `/audit` ページでも同じフローをモーダルダイアログとして利用できます。

## サインアウト

```bash theme={null}
failproofai auth logout
```

サーバー上の現在のセッションを無効化し、`~/.failproofai/auth.json` を削除します。APIサーバーに接続できない場合でも、ローカルファイルは削除されます。ローカルでのログアウト操作が常に優先されます。

## アカウント確認

```bash theme={null}
failproofai auth whoami
```

有効なセッションが存在する場合は `<メールアドレス> (<ユーザーUUID>)` を表示してコード0で終了し、サインインしていない場合は `not signed in` を表示してコード1で終了します。アクセストークンの有効期限が1分以内に迫っている場合は、バックグラウンドで自動的に更新されます。

## 再監査リマインダーの設定

`/audit` ページで **`[ set a reminder ]`** をクリックする（またはボタンが表示するモーダルからサインインする）と、ダッシュボードが `~/.failproofai/next-audit.json` に小さなファイルを作成します。

```json theme={null}
{
  "next_audit_at": 1780765200,
  "user_email": "you@example.com",
  "set_at": 1780160574
}
```

このファイルは設定したメールアドレスにひもづいています。CLIセッションを別のアカウントに切り替えると、以前のユーザーのリマインダーは表示されなくなります。デフォルトの期間は**7日間**で、スケジューラーが実装された後に設定可能になる予定です。`auth.json` と同様に `0600` パーミッションで作成されます。

ダッシュボードの `/api/auth/reminder` エンドポイントは `GET`（読み取り）、`POST`（設定・再スケジュール）、`DELETE`（削除）をサポートし、有効なセッションが必要です。

## `~/.failproofai/auth.json` の内容

```json theme={null}
{
  "access_token": "eyJhbGc…",
  "refresh_token": "9ede3e…",
  "access_expires_at": 1780160574,
  "refresh_expires_at": 1782748974,
  "user": { "id": "<uuid>", "email": "you@example.com" }
}
```

`0600` パーミッション（オーナーのみ読み書き可能）で作成されます。アクセストークンは有効期限1時間のHS256 JWTで、リフレッシュトークンはサーバーが `SHA-256(token)` として保存する不透明な256ビットのランダム文字列です。リフレッシュトークンの使い回しはサーバー側で検出され、そのユーザーのすべてのセッションが無効化されます。

## 環境変数

| 変数                     | デフォルト値                       | 用途                                                    |
| ---------------------- | ---------------------------- | ----------------------------------------------------- |
| `FAILPROOF_API_URL`    | `https://api.befailproof.ai` | APIサーバーのベースURLを上書きします。セルフホスト型APIサーバーを使ったローカル開発時に便利です。 |
| `FAILPROOFAI_AUTH_DIR` | `~/.failproofai`             | `auth.json` の保存場所を上書きします。主にテスト用途向けです。                 |

完全な一覧については [環境変数](/ja/cli/environment-variables) を参照してください。

## トラブルシューティング

**「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` を再実行して、新しいコードを取得してください。
