navikt/cplt

AIコーディングエージェント向けサンドボックスラッパー。GitHub Copilot CLI、OpenCode、Google Gemini CLI、Pi、またはプレーンシェルをカーネルレベルのサンドボックス内で実行し、エージェントがプロジェクトで作業できるようにしながらも、秘密情報にはアクセスできないようにします。

cplt とは?

このスキルは、AIコーディングエージェント(Claude Code、Cursor、Codexなど)がプロジェクトファイルにアクセスしつつ、シークレットや認証情報などの機密データを保護するためのカーネルレベルのサンドボックスを提供します。サポートするプラットフォームにはGitHub Copilot CLI、OpenCode、Google Gemini CLI、Pi、およびプレーンシェルがあり、任意のエージェントが安全に実行できます。動作原理として、Linuxの名前空間(特にユーザー名前空間とマウント名前空間)とseccompプロファイルを使用して、エージェントのファイルシステムアクセスを制限し、特定のディレクトリのみを読み取り専用または読み書き可能でマウントします。これにより、エージェントはプロジェクトのコードを編集できますが、ホームディレクトリや他の機密パスにはアクセスできません。開発者はエイリアスやラッパースクリプトを通じて簡単に統合でき、DockerやPodmanなどのコンテナランタイムと同様の分離を提供しますが、より軽量でエージェントに特化しています。

対応~Claude Code~Codex CLI~Cursor✓Gemini CLI✓OpenCode
npx skills add navikt/cplt

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

cplt は何をしますか?

AIコーディングエージェント向けサンドボックスラッパー。GitHub Copilot CLI、OpenCode、Google Gemini CLI、Pi、またはプレーンシェルをカーネルレベルのサンドボックス内で実行し、エージェントがプロジェクトで作業できるようにしながらも、秘密情報にはアクセスできないようにします。

概要

cplt はLinuxカーネルの名前空間(ユーザー名前空間、マウント名前空間)とseccompを使用して、AIコーディングエージェント用の軽量サンドボックスを作成します。エージェントのファイルシステムアクセスをプロジェクトディレクトリに制限し、機密性の高いシステムパスやユーザーデータにはアクセスさせません。

サポートするエージェント

  • GitHub Copilot CLI (gh copilot)
  • OpenCode (opencode)
  • Google Gemini CLI (gemini)
  • Pi (pi)
  • プレーンシェル(bash、zshなど)

使用法

インストール

# リポジトリをクローン
$ git clone https://github.com/navikt/cplt.git
$ cd cplt

# シェルにエイリアスを追加(推奨)
$ source cplt.sh

基本コマンド

# 現在のディレクトリでCopilot CLIをサンドボックス内で実行
$ cplt gh copilot

# サンドボックス内でOpenCodeを実行
$ cplt opencode

# サンドボックス内でプレーンシェルを開始
$ cplt bash

高度な使用法

# 特定のプロジェクトディレクトリを指定
$ cplt --project /path/to/my/project gh copilot

# 追加の読み取り専用マウントを許可(注意して使用)
$ cplt --allow /usr/share/some-tool gh copilot

# デバッグ出力を有効化
$ cplt --verbose gh copilot

仕組み

sandbox-runner バイナリが以下の処理を行います:

  1. 新しいユーザー名前空間を作成し、プロセスを特権のないユーザーとして実行
  2. 新しいマウント名前空間を作成し、以下のマウントを設定:
    • プロジェクトディレクトリを読み取り/書き込み可能でマウント
    • 必要なシステムディレクトリ(/bin、/lib、/usr)を読み取り専用でマウント
    • /home、/root、/tmp、/var などの機密性の高いパスを空のtmpfsでマウント
  3. seccompプロファイルを適用し、不要なシステムコールをブロック
  4. 指定されたエージェントプログラムをサンドボックス内で実行

設定

環境変数で動作をカスタマイズできます:

変数名説明デフォルト
CPLT_PROJECT_DIRプロジェクトディレクトリへのパス$PWD
CPLT_ALLOW_DIRS許可する追加の読み取り専用ディレクトリ(なし)
CPLT_VERBOSEデバッグ出力を有効化false
CPLT_USER_NSユーザー名前空間の分離を使用true
CPLT_DISABLE_SECCOMPseccompフィルタリングを無効化false

制限事項

  • Linuxのみサポート(macOSやWindowsには対応していません)
  • カーネルがユーザー名前空間をサポートしている必要があります
  • 一部のエージェントは、機能制限によりサンドボックス内で特定の機能が動作しない場合があります
  • サンドボックスは特権昇格攻撃に対する完全な防御を提供しません

セキュリティ

このツールは、偶発的なデータ漏洩に対する防御線を提供しますが、悪意のあるエージェントやバグのあるエージェントに対する完全な保護を保証するものではありません。機密性の高いワークロードには、専用の隔離環境(別のVMなど)を使用することをお勧めします。

ライセンス

MIT

関連スキル