ペアリング
端末が入るのは一度だけ、あなたの手で
エージェントは使い捨ての秘密を含む QR コードと入力用コードを表示します。時間で失効し、一度使われれば死にます。
- 両側がチャネルの指紋を計算して表示します。両方で確認して初めてペアリングが完了し、食い違えば中断してセキュリティ記録に残ります。
- エージェントは一覧を持ちます。名前、端末の種類、ペアリングした日、最後に接続した日、指紋。
- 端末を失効させると、生きている接続はただちに切れ、発行済みの資格は効かなくなり、アプリはその Mac のキャッシュを消します。
- これらはすべて外部の設備をいっさい使わずローカルネットワークで成立します。
可視範囲
Mac が渡すのはフォルダであって、ファイルシステムではない
ディレクトリを人間の名前で登録します。その外側は、電話から見れば存在しません。
- ファイル・検索・git のどの操作も、シンボリックリンクを解決したうえで境界と照合されます。外を指すリンクは扉になりません。
- ワークスペースは読み取り専用にできます。書き込み可能な中の一つのフォルダやファイルも同じで、食い違えば厳しいほうが勝ちます。
- 規則を決めるのは Mac だけです。電話には有効なモードが伝えられ、書こうとする前にそれが表示されます。
- そのワークスペースのファイルが Mac の外へ出てよいかどうかも、一つのスイッチで決まります。禁止とは、端末に保存しない・保存を勧めもしない・他のアプリに渡さない、そして以前保存したものは消す、という意味です。
- ワークスペースを消せば、それにつながるセッションと購読もいっしょに閉じます。
許可
危ないものは箱から出した時点でどれも入っていない
プロセスの終了、常駐プロセスの管理、sudo への秘密の入力、Mac のターミナルセッションの続行、ローカルサーバーのプレビュー、データベースの変更、iOS シミュレータ内のアプリのデータベースの読み取りは別々のスイッチで、七つとも切れた状態で届きます。
- 切ると即座に効きます。進行中の操作は拒否され、管理下のプロセスは動き続けて Mac 上で見えたままです。
- 拒否は理由を名指しします。「Mac で切ってある」は「権限がない」「あなたのプロセスではない」と区別でき、どこで入れるかもアプリが言います。
sudo の秘密は端末側で Face ID により解錠され、流れの中の打鍵ではなく独立した操作として送られます。持ち主が別途許可するもので、既定では切れています。
- 読み取り専用のワークスペースはターミナルにも効きます。そこから生まれたプロセスも含めてです。掛けられなかった場合は、黙って前提にさせず、そう伝えます。
届く範囲
同時に一台、あなたが別のことを言うまでは
既定ではちょうど一台だけがエージェントと働きます。設定は一から五、あるいは無制限。席を取るのは端末であって、接続ではありません。
- 上限を超えた端末は、理由を告げて断られます。黙って落とされるのではありません。
- 中継はエージェントごとに禁止できます。直接とローカルだけ、あるいは何も、のどちらかです。
- Rendezvous ノードの一覧はエージェントの設定であって、アプリに焼き込まれたものではありません。空の一覧は「ローカルネットワークのみ」という、壊れてはいない正規の運用です。
- 公開カタログのノードが作業一覧に入るのは、あなたが入れたときだけ。カタログへの問い合わせ自体も切れますし、なくても製品は完全に使えます。
位置による入場
どこにいるかを名乗った端末だけ
入れておくと、自分の位置を名乗った端末しか接続を張れません。位置情報を切っている、あるいは拒否している端末は、理由と、どこで入れるかを添えて断られます。
- 位置は精度とともに、「端末の申告による」という注記つきでアクセス記録に書かれます。実際そのとおりだからです。申告であって、検証ではありません。エージェントはそれを取り繕いません。
- 位置がないことによる拒否も、通したときと同じように記録されます。この門はどちらに転んでも跡を残します。
- これは入場制限であって追跡ではありません。残るのは接続の瞬間に端末が言ったことだけで、その間のことは残りません。
アクセス記録
すべての操作を、そして中身は決して
エージェントは、つながった端末が何を求めたかを記録します。時刻、端末、操作の種類、どう終わったか、そして要求自身が名指しした対象。
- 対象とは、パス、ブランチ、プロセス、検索文字列、転送されたバイト数。要求が名指ししたものです。
- 接続と切断も操作と並んで記録されます。
- 決して残らないもの。ファイルの中身、コマンドの出力、ターミナルの入力、AI との会話の一語も。どの詳細度でもです。
- 同じ端末から同じ対象への同じ操作が一定時間内に繰り返されると、行が増えるのではなく数が増えます。
- 保存期間と容量で区切られ、古いものから消えます。
- 端末・種類・対象の一部で絞り込めます。ファイルに書き出して外で読めます。切ることもでき、切ったこと自体がこの記録に書かれます。
- 書き込みに失敗しても、記録しようとした操作が取り消されたり遅れたりすることはありません。
- プロトコルにこれを読む操作はありません。電話からも、私たちからも、誰からも取り出せません。読むのは Mac の前に座っている人です。
コピー
渡したファイルがどうなったかを Mac は聞く
端末は受け取ったものの行き先を報告します。端末に保存した、他のアプリへ送った、消した。
- 受け取り先のアプリをシステムが教えた場合は、報告もそれを名指しします。
- 申告による記録は申告と印がつき、エージェント自身が見届けたものと区別されたままです。記録の中でも画面の中でも。
- 報告は通信の切断を越えて残り、次につながったときに届きます。
- そして画面は、都合の悪いことを声に出して言います。報告がないことは、コピーがないことを意味しません。守れない保証を、ここでは保証として売りません。
Apple Watch
時計には自分の鍵があり、その保証人はあなた
時計は自分の鍵ペアを持ちます。権限は iPhone から委譲され、エージェントがその委譲を受け入れるのは、あなたが Mac で承認したあとだけです。
- 委譲には期限があり、iPhone と接触するたびに更新されます。
- iPhone を失効させれば、iPhone が委譲したものはすべて効力を失います。
- 手首で何ができるかは危険度が決めます。拒否は常に可能。承認は低リスクなら可、中リスクは竜頭を回し、高リスクは電話に回ります。推定でしか認識されていない要求は、低リスクのときだけ時計から承認できます。
- ファイル操作と git は、時計からはいっさいできません。
電源
Mac が眠らないのは、ロックされた Mac が役に立たないから
エージェントが動いているあいだ、Mac は画面ロックを抑えられます。ロックされた Mac は自分の鍵を組み立てられず、接続は立ちません。だからこれは既定値であって、動かせない規則ではありません。
- 抑止は切れます。切ってあればロックされた Mac は接続を断り、一般的なエラーに落とすのではなくその理由をそのまま名指しします。
- 特権操作の記録は、アクセス記録とは別に、エージェントが Mac 上で持ちます。