Skip to main content
このドキュメントは Devin の連邦政府向け導入環境を対象としています。Devin ドキュメントに戻る
エアギャップ化された CLI と Desktop は、すべての状態を少数のファイルに保存します。これらのファイルの形式は文書化されており、今後も変更されません。このページでは、各ファイルの配置場所と、ユーザー自身が作成するファイルを一覧で示します。また、監査ログを SIEM に転送できるよう、その正確なスキーマも記載しています。

ファイルの場所

自分で作成するファイル

以下は、マシン全体に適用される入力ファイルです。各ファイルにはデフォルトのパスがあり、環境変数で上書きできます。この変数は、エージェントを起動する環境で設定しておく必要があります (Desktop での設定方法については APIキーの環境変数 を参照してください) 。 デフォルトのパスは macOS と Linux で共通です。Windows では、ライセンス、モデルファイル、認証ファイルはデフォルトで C:\ProgramData\Devin\ (license.devin-onprem-license、models.json、auth.json) に、マシン全体のポリシーファイルは C:\ProgramData\Devin\system.json に配置されます。上書き用の環境変数は他の OS と同じです。ファイルを配置する前に、フォルダへのアクセスを制限してください。CLI はこれらのファイルを読み取るだけで、書き込むことはありません。そのため、構成管理ツールで管理し、read-only に設定しておくことができます。

CLI が書き込むユーザーごとの状態

CLI は macOS と Linux の両方で XDG ベースディレクトリの構成に従います (自身の状態の保存に ~/Library は使用しません) 。XDG_CONFIG_HOME と XDG_DATA_HOME が設定されている場合は、その値が使用されます。 cli-federal は、エアギャップ化されたbuildで使用される製品サブディレクトリです。同じマシンに標準の Devin CLI (cli を使用) がインストールされていても、状態は分離して保持されます。 Windows では、CLI は XDG_* 変数を読み取りません。同じファイルは %APPDATA%\devin\ 配下に、キャッシュは %LOCALAPPDATA%\devin\ 配下に保存されます。

Desktop 固有の状態

Desktop アプリケーションは、同じマシン上にある他の Devin Desktop や Windsurf のインストールから分離されています。 シンボリックリンクは、Desktop の起動時に ~/.devin-airgap-config/devin/config.json が存在しない場合にのみ作成されます。そこにすでに通常のファイルがある場合、Desktop はそのファイルに手を加えず、バンドル版エージェントは共有ファイルではなくそのファイルを利用します。このとき、Devin ACP 出力チャンネルに WARNING: … is a regular file, not a symlink という行が記録されます。リンクを復元するには、そのファイルを削除して Desktop を再起動してください。 Windows ではシンボリックリンクは使用されません。Desktop のバンドル版エージェントと CLI は %APPDATA%\devin\config.json を直接共有し、Desktop はユーザーの %APPDATA%\devin\mcp_config.json を読み込みません。Desktop のユーザーデータは %APPDATA%\Devin - Airgap\ に保存されます。 まっさらな状態から再インストールする場合、安全に削除できるのは ~/.devin-airgap-config/ と ~/.devin-airgap/ のみです。~/.config/devin/ と ~/.local/share/devin/ はスタンドアロンの CLI でも使用されるため、削除しないでください。

監査ログ

エアギャップ化された CLI は、追記専用の構造化された監査ログをローカルに書き込みます。この監査ログは常時有効で (オン/オフを切り替えるトグルはありません) 、他の Devin build には存在しません。ログはワークステーション上に書き込まれるため、あなた自身でレビューしたり、SIEM に取り込んだりできます。

保存場所とローテーション

無期限に保持する必要がある場合は、ローテーション済みファイルが削除される前に SIEM へ転送してください。CLI は追記のみを行い、既存の行を書き換えることはないため、標準的なファイル追跡型のコレクターで十分に対応できます。詳しくは 監査ログを SIEM に転送する を参照してください。

秘匿化の保証

イベントに含まれるのはパスとメタデータのみです。プロンプト、モデルのレスポンス、コード、ファイルの内容、シークレット値、API キー、シェルコマンドライン全体がログに含まれることはありません。シェルツールの場合、記録されるのはプログラム名 (最初のトークン) のみです。

エンベロープ (スキーマバージョン 1)

すべての行にこのエンベロープが含まれます。イベント固有のフィールドは、エンベロープと同じ階層にフラットに配置されます。 パーサーは、未知のフィールドや未知の event 値を無視するように設定してください。新しいフィールドやイベントタイプは、schema_version を引き上げずに追加されることがあります。

イベントの種類

session_start

エージェントセッションの開始時 (新規セッションまたは再開されたルートセッション) に発行されます。

session_end

セッションが終了したとき、またはエージェントがシャットダウンしたときに発行されます。
正常終了時には、すべての session_start に対して、同じ session_id を持つ session_end が必ず 1 つだけ対応します。CLI はエージェントを子プロセスで実行し、終了処理時にその子プロセスを終了させます。そのため、セッションが終了すると、親プロセスが子セッションの session_end (reason は other) を記録します。SIGKILL や電源断によって強制終了されたセッションは、最後のイベントを書き込めません。対応する session_end がない session_start は、異常終了として扱ってください。

tool_call

エージェントがツールを実行するたびに出力されます。

file_read と file_write

tool_call に加えて、ツールの決定された権限スコープに含まれるパスごとに 1 回ずつ発行されます。これらのイベントが表すのは、実際に検証された I/O ではなく、ツールにスコープとして許可されたアクセスです。たとえば、複数のパスに対する読み取りスコープで承認されたツールは、実際にはその一部にしかアクセスしなかった場合でも、パスごとに file_read を発行します。また、これらのイベントはツール呼び出しの成否にかかわらず発行されます。

model_call

モデルファイルで定義されたモデルのエンドポイントに推論リクエストを送信するたびに記録されます。 エンドポイントが使用量を報告しない場合、トークン関連のフィールドは省略されます。

auth

actor オブジェクト

アイデンティティのアトリビューションは、OS ユーザー、ローカルの Git の識別情報、および (SSO (シングルサインオン) が設定済みの場合) 検証済みの ID トークンから得られるアイデンティティで構成されます。取得できないフィールドは省略されます。 SSO フィールドは、次のイベントに含まれます。検証済みトークンが手元にあるすべての auth イベント (sso_login、sso_refresh、sso_logout、sso_login_denied) 、sso_revalidation_failed (プロセスが検証したログイン、または何も検証していない場合はトークンキャッシュに残っているログインについて) 、および session_start と identity_resolved (実行中のプロセスが起動時に検証したログインについて) です。tool_call、file_read、file_write、model_call には actor が含まれないため、session_id を介して対応する session_start に紐付けてください。
sso_groups には、各ユーザーの IDP グループメンバーシップがローカルマシン上に記録されます。監査ディレクトリとファイルには所有者のみがアクセスできます。グループ名が機密情報にあたる環境では、データ取り扱いのレビュー対象に含めてください。

監査ログを SIEM に転送する

Devin は監査レコードをどこにも送信しません。複数のワークステーションの使用量を集約するには、SIEM で既に利用しているログ収集エージェント(たとえば Splunk universal forwarder や Elastic Agent)の収集対象として、各ワークステーションの監査ディレクトリを指定します。Devin 側での設定は不要です。 エージェントのファイル入力を次のように設定します。
監査ディレクトリとファイルは所有者のユーザーのみが読み取り可能で、Devin はログを開くたびにこれらの権限をリセットします。収集エージェントは root または当該ユーザーとして実行してください。別のアカウントにアクセスを許可するためにファイルの権限を変更しないでください。変更は維持されません。
各ユーザーのワークステーションには、アクティブなファイルに加えて、10 MiB のローテーション済みファイルが最大 10 個、合計で約 110 MiB 保持されます。これを超えた古いレコードは削除されるため、収集から次の収集までの間にこれを超える量を生成するワークステーションでは、最も古いレコードが失われます。 収集が正しく機能していることを確認するには、ワークステーションで Devin セッションを開始して終了し、同じ session_id を持つ session_start レコードと session_end レコードを SIEM で検索します。

例: Splunk universal forwarder

次の 2 つのファイルを、各フォワーダー上のアプリにデプロイします (例えば $SPLUNK_HOME/etc/apps/devin_audit/local/) 。monitor スタンザは、ワークステーションのオペレーティングシステムに対応するもののみを利用し、devin は利用するインデックス名に置き換えてください。
inputs.conf
props.conf
INDEXED_EXTRACTIONS はファイルを読み取る側で適用されるため、props.conf はインデクサーだけでなくフォワーダーにも配置する必要があります。crcSalt は設定しないでください。未設定であれば、フォワーダーはローテーション済みのファイルを内容で識別するため、名前が変わっても同じファイルを再度読み込むことはありません。ワイルドカードパスに含まれるすべてのディレクトリは、フォワーダーを実行するアカウントから読み取れる必要があります。非 root のサービスアカウントとしてインストールしたフォワーダーは、所有者のみがアクセスできる監査ディレクトリを読み取れません。 各フィールドは JSON の名前のままインデックス済みフィールドとして取り込まれるため、actor.sso_user、model、input_tokens を直接検索できます。

例: Elastic (Filebeat または Elastic Agent)

以下の filestream 入力を filebeat.yml に追加します。パスは、ワークステーションの OS に対応するものだけを残してください。
filebeat.yml
ndjson パーサーは、すべてのレコードを devin. プレフィックスの下に配置します (devin.event、devin.session_id、devin.actor.sso_user) 。target: "" は設定しないでください。レコードの event フィールドは文字列であるため、Elastic Common Schema の event オブジェクトと競合し、Elasticsearch がドキュメントを拒否します。timestamp プロセッサーは ts を @timestamp にコピーします。Elastic はこのプロセッサーをベータ版としているため、必要であればこれを削除し、代わりにインジェストパイプラインで devin.ts から @timestamp を設定してもかまいません。id は、filestream 入力の間で一意である必要があります。Filebeat のデフォルトのファイルアイデンティティはファイル先頭のフィンガープリントです。ローテーションでファイル名が変更されても同じファイルとして追跡されるため、ローテーション関連の設定は不要です。フィンガープリント長は、デフォルトの 1024 バイトから 64 バイトに引き下げています。Filebeat 9.0〜9.4 はファイルがその長さに達するまで無視するため、レコード数の少ないワークステーションがスキップされてしまうからです。監査ファイルの先頭 64 バイトには最初のレコードの ts と pid が含まれるため、フィンガープリントが重複することはありません。後から長さを変更すると、Filebeat はすべてのファイルを最初から読み込み直します。 Elastic Agent を利用する場合は、エージェントポリシーに Custom Logs (Filestream) 統合を追加して同じパスを入力し、上記の parsers ブロックと processors ブロックを統合のカスタム設定フィールドに記述します。
Cognition は、これらの使用例を Splunk や Elastic のデプロイ環境で検証していません。ワークステーションにデプロイする前に、ご自身の環境で検証し、インストール済みのバージョンに対応するベンダーのドキュメントを確認してください。
インデックス化や検索に役立つフィールド: ユーザーを特定できるのは session_start と auth のレコードのみです。tool_call、file_read、file_write、model_call のレコードをユーザーと紐付けるには、同じ session_id を持つ session_start レコードと結合してください。

診断情報レポート

devin diagnostics は、機密情報を除去したプレーンテキストのレポートを出力します。Cognition サポートに送信する前に、内容をレビューできます。レポートに含まれるのは、バージョン、設定の構成状況 (各ファイルが存在し、正しく解析できるかどうか) 、モデル名、各 API キー変数が設定されているかどうか、および監査ログの統計情報のみです。プロンプト、コード、ファイルの内容、シークレット値、エンドポイント URL、環境変数の値は一切含まれません。
ファイル名を指定するには --output <path> を利用します。レポートは所有者のみが読み書きできる権限 (0600) で書き出されます。サポートリクエストに含める内容については、トラブルシューティングを参照してください。