cplt CLI
cplt запускает ИИ-агентов в песочнице на уровне ядра: код правится, а ключи SSH и пуш в основную ветку остаются закрытыми.
- 148 ★ репозитория
- Последний коммит
- MIT
Расширенный доступ
Почему такой уровень
- Песочница сужает угрозу, но на Linux часть защит неполная, а `--allow-browser` и доступ к Keychain расширяют права агента.
- Установка через `curl | bash` и подключение apt-репозитория требуют доверия к издателю.
Установка
- Работает в
Ручная установка
brew install navikt/tap/cpltПервая команда раздела Install из README, для macOS. На Debian и Ubuntu есть пакет через apt, на других дистрибутивах установочный скрипт.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Песочница сужает угрозу, но на Linux часть защит неполная, а `--allow-browser` и доступ к Keychain расширяют права агента.
- Установка через `curl | bash` и подключение apt-репозитория требуют доверия к издателю.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
cplt, CLI-обертка на Rust, запускает Claude Code, Copilot CLI, OpenCode, Gemini CLI, `goose` и любую оболочку внутри песочницы. На macOS работает Apple Seatbelt через `sandbox-exec`, на Linux связка Landlock, `seccomp-BPF` и по желанию Bubblewrap. Агент читает и пишет проект, но не видит `~/.ssh`, `~/.aws`, `.env*`, файлы `.pem` и `.key`. Охрана команд `git` и `gh` блокирует пуш в основную ветку, принудительный пуш, слияние PR и релизы. Исходящий трафик ограничен портом 443, а прокси с белыми и черными списками доменов пишет журнал запросов. Политика репозитория лежит в `.cplt.toml` и коммитится вместе с кодом.
Для кого. Разработчикам и командам, которые запускают агентов на рабочих ноутбуках с доступом к ключам, и тем, кто отвечает за безопасность таких запусков.
Подходит, если
- Агента запускают на репозитории с секретами, а утечку ключей допускать нельзя.
- Команде нужна единая политика доступа агентов, закоммиченная в репозиторий.
- Агент ставит зависимости из интернета, а подмененный ввод или вредоносный MCP-сервер могут направить его на кражу ключей.
- Пуш в `main` и слияние PR с агентской сессии должны быть закрыты.
- Любую команду, например `npm install`, хочется выполнить в песочнице отдельно от агента.
Не подходит, если
- Нужен запуск под Windows без WSL2: нативного бэкенда песочницы нет.
- Требуется полная изоляция уровня виртуальной машины или контейнера.
- Сборка должна ставить глобальные инструменты вроде `bun install -g` или `mise use -g` в песочнице.
Пример запроса к агенту
Запусти Claude Code через cplt в этом репозитории, покажи, какие пути и домены заблокированы, и выполни `cplt doctor`.Ограничения
Песочница не абсолютна. На macOS `sandbox-exec` объявлен устаревшим, и Apple может убрать его в будущей версии. На Linux нужно ядро 5.13 или новее с Landlock, фильтрация TCP-портов начинается с версии 6.7, а защита `.env` внутри проекта без Bubblewrap ядром не обеспечивается. Landlock не умеет закрывать подпуть внутри разрешенного дерева, поэтому `.git/config` и `.gitmodules` остаются доступными для записи. Порт 443 открыт, и через него доступны SSH-серверы вроде `ssh.github.com:443`. Флаг `--allow-browser` открывает запуск любых приложений в обход песочницы. Допуск к Keychain на macOS не сужается до одной записи.
Как отключить. Уберите алиас или функцию-обертку, созданную через `cplt --shell-install`, и запускайте агента напрямую. Пакет удаляется тем же менеджером, которым ставили: `brew uninstall cplt` или `sudo apt remove cplt`. Файл `.cplt.toml` в репозиториях удалите вручную.
Частые вопросы
Какие агенты поддерживает cplt?
GitHub Copilot CLI, OpenCode, Gemini CLI, Antigravity CLI, Pi, Claude Code, `goose`, DeepSeek Harness и любую оболочку через `--agent shell`. Выбор делается флагом `--agent`.
Работает ли cplt в Windows?
Нативно нет. Запускайте его внутри WSL2: там это обычная установка Linux, а ядро Microsoft содержит Landlock.
Как запустить обычную команду в песочнице без агента?
Выполните `cplt exec -- npm install` или `cplt exec -c "npm install && npm test"` для составных команд. Можно сделать алиас `alias npm="cplt exec -- npm"`.
Можно ли только предупреждать, а не блокировать пуши?
Да. `cplt config set git_guard.mode warn` переводит охрану git в режим предупреждений, а `--no-git-guard` отключает ее целиком.
Чем cplt отличается от песочницы Codex CLI?
cplt добавляет фильтрацию исходящих доменов через прокси, файл политики `.cplt.toml` с подтверждением доверия и поддержку девяти агентов. У Codex CLI есть режимы `read-only` и `workspace-write`, а в cplt такой матрицы режимов пока нет.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыClaude Code, Codex, OpenCode и pi работают в усиленном контейнере: файлы только проекта, сеть по белому списку, ключи в прокси.
CLI на Go запускает агента в песочнице ОС: скиллы и секреты доступны через мост, а файлы и сеть изолированы.
Fence запускает команды и агентов вроде Claude Code в песочнице: сеть блокирована по умолчанию, доступ к файлам и команды задает конфигурация
Локальный страж для кодовых агентов: блокирует запись секретов и принудительный пуш в main, предупреждает об опасных командах.
Движок авторизации для агентов: каждое действие получает ответ allow, deny, human_review или compute, решения пишутся в журнал
Команда safehouse запускает Claude Code, Codex и другие агенты в песочнице macOS: файлы закрыты по умолчанию, нужные папки открываются флагами
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Звезды репозитория | Главное отличие |
|---|---|---|---|
| cplt (эта карточка) | нет | 148 | |
| nono | нет | 4 945 | nono изолирует процессы агентов отдельным механизмом; cplt добавляет охрану `git` и `gh` и командный прокси с доменными списками |
| Agent Safehouse | нет | 2 149 | Agent Safehouse ограничивает агента на macOS; cplt работает и на Linux через Landlock и держит политику в `.cplt.toml` |
Коротко о README
Установка через Homebrew, `mise`, apt или `install.sh`. Режимы проверяются командой `cplt doctor`, а `cplt --print-profile` печатает полный профиль SBPL.