セキュリティモデル
ThreadCells は、1 人または少人数の信頼できるチームが運用する、信頼できる 1 台の Linux ホストを対象としています。強力なネイティブコーディングエージェントを調整するものであり、敵対的なユーザー、プロンプト、リポジトリ、またはプロバイダープラグイン向けのサンドボックスではありません。
実用的な信頼境界
ホストと runtime ユーザー
ThreadCells のオペレーティングシステムアカウントが読み取りまたは実行できるものには、ネイティブエージェントも到達できる可能性があります。専用アカウント、最小限のファイルシステム権限、レビュー済みのプロバイダーインストール、および自動化に適したリポジトリを使用してください。
管理対象 worktree は writer を分離しますが、閉じ込めるものではありません。エージェントに不要な認証情報やホストアクセスを runtime アカウントに与えないでください。
Web アクセス
通常の UI とパッケージ化された Docs は、一般的なユーザーログインを実装していません。127.0.0.1 にバインドしてください。ときどきのアクセスには SSH トンネルを、認証付き HTTPS URL には Caddy と Authelia を使用してください。生の ThreadCells ポートを公開してはいけません。
インストール済み PWA は同じネットワーク信頼境界を維持します。その service worker はオフラインの運用状態を提供できず、API、ターミナル、認可、workflow、結果、または Statistics をキャッシュしません。
オペレーター認可
機密性の高いコントロールプレーン変更には、別個の OS プリンシパルによってプロビジョニングされた独立したオペレーター検証器を使用します。最小シークレット長は正確に 5 文字であり、より長いランダム生成値を推奨します。
ThreadCells が保存するのは、salted scrypt 検証器、短命なセッション/grant ダイジェスト、スコープ、発行者、有効期限、消費、および監査記録であり、平文ではありません。検証器とそのすべての親ディレクトリは、サービスアカウントが置換できない状態でなければなりません。5 分間のブラウザーセッションは HttpOnly、SameSite=Strict の cookie を使用します。
この境界は構成済みの変更を保護します。Web UI 全体をマルチユーザー認証アプリケーションにするものではありません。
例外的なオーナー起動
owner-executor/XHigh 起動には、正確な不変のプロファイルリビジョン、プロバイダー構成リビジョン、プロジェクト/worktree、セッション要求、トポロジー、発行者、および委任深さに結び付けられた一度限りのケイパビリティが必要です。これはターミナルメタデータとともにアトミックに消費されます。
builtin critical_sol_xhigh_owner の Web Create Session および Add Agent フローには、同じ例外的な警告、明示的な確認、オペレーターアンロック、およびスコープ付き一度限りのケイパビリティが必要です。Add Agent は、ユーザー入力のパスを受け入れるのではなく、grant を既存セッションと解決済みの正規 worktree に結び付けます。ローカルの critical_sol_xhigh_owner --owner-xhigh パスには、明示的な対話確認と loopback-only 起動が必要です。これらの経路のいずれも、子や無関係な Web Settings に権限を与えません。プロンプトテキストでオーナー権限を作成または委任することはできません。
プロバイダーとインポートされたアーティファクト
プロバイダーアダプターは実行可能な信頼済みパッケージであり、オペレーターのレビューが必要です。プロバイダー/プロファイル JSON は信頼できない宣言的入力です。実行可能パス、コマンド、シェルフラグ、環境、raw secrets、任意の MCP コマンド、および許可されていないワイルドカード権限は拒否されます。
プロバイダー認証はプロバイダー自身がサポートする仕組みにとどめます。レジストリーエクスポートではシークレット値と一度限りの grant を省きます。
ターミナルごとの制御認証情報は、ターミナル/プロバイダープロセスにスコープされます。ThreadCells は認証情報を持たない bootstrap を通じて長寿命 tmux サーバーを開始するため、その永続プロセスのコマンドラインにはターミナル認証情報が残りません。これらの認証情報は、同じ信頼された runtime アカウントとして実行されるプロセスにとっては依然として機密です。
Telegram 通知
Telegram 配信は任意で、既定では無効、インストール全体に適用され、プロジェクト構成から独立しています。その bot token は、SQLite の外部にあるプライベート ThreadCells state root の runtime 所有 0600 通常ファイルとして、書き込み専用の Web 設定に保存されます。読み取り API は安全な構成状態のみを公開します。オペレーター認可は更新と明示的な接続/テスト操作を保護します。
ライフサイクルメッセージは固定の安全な要約を使用し、プロンプト、ターミナル出力、例外本文、パス、認証情報を省きます。外部配信は workflow 実行に対して fail-open であり、永続的に重複排除されます。通知を有効にしても、無効中に観測されたイベントは再送されません。
データの機密性
SQLite データベース、ターミナルログ、プロンプト、結果、添付ファイル、管理対象 worktree、バックアップ、オペレーター検証器、およびプロバイダー固有のロールアウト履歴は機密として扱ってください。ThreadCells 自体が認証情報のログ記録を避ける場合でも、専有コードやユーザー提供コンテンツが含まれる可能性があります。
平文のオペレーター/プロバイダー/Telegram シークレットを、リポジトリ、環境ダンプ、サポートバンドル、テレメトリー、ブラウザーストレージ、API 応答、またはスクリーンショットに入れないでください。
破壊的操作
ハウスキーピングは plan-first であり、fail-closed です。不明、読み取り不可、オープン、アクティブ、参照中、ID 変更済み、またはメタデータ不完全なリソースは保護されたままです。バックアップが自動削除されることはありません。
Full Cleanup は同じ Housekeeping 権限内のより積極的な保持モードであり、別の削除サブシステムではありません。サーバー側オペレーターセッションと永続操作確認を再利用し、呼び出し元が選んだファイルシステムパスを受け取らず、起動/プロバイダー/Heavy のアドミッションと直列化し、変更直前に全エージェントがアイドルであることを再検証します。アクティブリリース、SQLite 状態、Ready エージェントの継続権限、認証情報/プロバイダー状態、現在のソース/ツール権限、曖昧なリソースは保護されたままです。証明済みの非アクティブなローカルロールバックリリースは、この明示的操作によってのみ意図的に削除されます。
パス名による削除は、ソケットアクティベーション方式の root ヘルパーに限定されます。ヘルパーは同じオペレーター権限を再認証し、正確な正規計画 ID だけを受け付け、コントロールプレーンプロセスがすべてのアドミッションフェンスを保持していることを要求し、ディスクリプター相対削除の前に、隔離済みディレクトリー ID を runtime ユーザーによる置換に対してロックします。非特権 API には、任意パス操作も弱いフォールバック操作もありません。
デプロイではロールバック用 runtime とデータベースバックアップを保持します。公開、パブリックネットワーク公開、破壊的な履歴変更は、引き続き別個のオーナー判断です。
オペレーターの責務
- OS、ThreadCells、プロバイダー CLI、リバースプロキシ、および認証レイヤーにパッチを適用します。
- 書き込みアクセスを付与する前に、プロンプト、プロファイル、アダプター、リポジトリをレビューします。
- runtime ユーザーとサービス環境を最小権限に保ちます。
- 永続状態をバックアップし、その復元をテストします。
- マージ、デプロイ、公開の前に差分と結果を確認します。
- loopback または認証付きプロキシのアクセス制御を維持します。
- プロバイダー認証情報をローテーションし、安全な管理プロセスを通じてオペレーター検証器を置き換えます。
セキュリティ問題の報告
SECURITY.md に従ってください。ライブの認証情報、プライベート状態、または保守担当者が安全に再現するために必要な範囲を超える公開 exploit 詳細を含めないでください。
