# 安全のしくみ

鍵をどう預かり、だれに渡し、何を残しているかをまとめます。

## 保管

値は AES-256-GCM で暗号化して保管します。保管庫ごとに別の鍵で暗号化し、その鍵はさらに大もとの鍵で包んでいます。大もとの鍵は保管場所を分けてあり、入れ替えても預けたものを作り直す必要はありません。

一覧の取得では値を返しません。値が動くのは、人かエージェントがその 1 本を名指しで取りに来たときだけです。

## 通信

画面も、手元の道具も、サーバとのやりとりはすべて TLS です。手元の資格情報は `~/.config/aikagi` に本人だけが読める権限で置かれます。

## サインイン

人のサインインは Google アカウントだけです。aikagi 専用のパスワードはありません。パスワードの使い回しや、退職者のパスワードが残ることを考えずに済みます。

ターミナルからのログインは、かならずブラウザで 1 回承認します。承認した端末は一覧に出て、いつでも切り離せます（[端末](https://aikagi.dev/guide/devices.md)）。

## だれに渡すか

鍵が渡るかどうかは、3 つを順に通ります。

- ワークスペースとプロジェクトでの[役割](https://aikagi.dev/guide/members.md)。
- フォルダの範囲。`aws/dev` のように絞れます。
- エージェントも人と同じ[メンバー](https://aikagi.dev/guide/members.md)で、同じ役割とフォルダの範囲を持ちます。

許可されなかった鍵は、名前も返りません。権限が足りないときは、黙って空を返すのではなく、その旨を返します。

## 記録

値の取得は 1 回ごとに 1 行残ります。だれが・いつ・どの鍵の・どの版を・どこから取ったか。[監査ログ](https://aikagi.dev/guide/audit.md)は画面からもターミナルからも読めます。値そのものは記録に入りません。

## 切り離す

止めかたは 3 つあります。どれもその場で効きます。

- 端末ごとの失効。その端末は再びログインするまで鍵を取れません。
- エージェントの[鍵](https://aikagi.dev/guide/tokens.md)の失効。期限も必須で、最長 365 日です。エージェントを失効させれば、その鍵も一緒に止まります。
- メンバーを外す、または招待を取り消す。

## AI エージェントに渡すときの考えかた

エージェントに鍵を渡す以上、その鍵はエージェントの手元にあります。aikagi はそこを、次の 4 つで扱いやすくしています。

- 渡すのは環境変数だけで、`.env` のようなファイルを作りません。値は子プロセスの中にしか現れません。
- 渡す範囲は役割とフォルダで狭められます。人の手が入らないところは、用途ごとのエージェントを立てて必要な範囲だけ与えます。
- 必要になった 1 本だけを取りに行く道もあります。
- 渡したこと、取ったことが、すべて記録に残ります。

---

出典: https://aikagi.dev/guide/security/
