> ## Documentation Index
> Fetch the complete documentation index at: https://exosphere-auto-translate-docs-20260624-1149.mintlify.site/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
```

有効なセッションが存在する場合は `<email> (<user 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) を参照してください。

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

**「APIサーバーに接続できませんでした」** — CLIが `FAILPROOF_API_URL` へのTCP接続を開けません。ネットワーク環境を確認するか、セルフホスト型APIサーバーを使用している場合は `FAILPROOF_API_URL` を設定してください。

**「レート制限」** — 15分以内に同じメールアドレス（5回/メール）またはIPアドレス（20回/IP）からのログイン試行が多すぎる場合、または同じメールアドレスへの前回のリクエストから30秒間の再送信クールダウン中です。エラーメッセージには再試行可能になるまでの時間が秒単位で含まれます。

**コードが拒否された** — OTPが誤っているか、期限切れか、または5回の入力ミスによるロックアウトが発生しています。`failproofai auth login` を再実行して新しいコードをリクエストしてください。
