
Песочница и MCP-прокси, которые блокируют доступ AI-агентов кодирования к чтению SSH-ключей, учётных данных AWS и файлов .env, с политикой запрета по умолчанию и журналами аудита с защитой от подделки.
Песочница Claude Code по умолчанию позволяет агенту читать ваши SSH-ключи и учётные данные AWS. Aegis — нет.
Два уровня защиты, оба проверены на реальном оборудовании.
Песочница ядра — собственная оболочка агента не может получить доступ к запрещённому пути:
$ ! cat ~/.ssh/id_rsa
cat: /Users/you/.ssh/id_rsa: Operation not permitted
$ ! cat ~/.aws/credentials
cat: /Users/you/.aws/credentials: Operation not permitted
$ tail ~/Library/Application\ Support/Aegis/denials.log
kernel denied file-read-data /Users/you/.ssh/id_rsa to cat(pid 41560)
kernel denied file-read-data /Users/you/.aws/credentials to cat(pid 42180)
Прокси MCP — тот же инструмент, тот же файл, с Aegis и без него:
direct to the server: allowed: TOKEN=proof-env-secret
through aegis proxy: AEGIS DENIED: read_text_file
Reason: path matches deny rule '.env'
Rule: deny_paths
Каждая строка подтверждена тестом, выполненным для этого релиза; там, где что-то ещё не протестировано, это указано явно.
aegis workspace add / remove / list — изменяет папки, в которых агент может работать, без редактирования policy.json. Добавление всегда требует --confirm-grant; удаление — никогда. add отказывает для вашего домашнего каталога, для всего, что содержит собственные файлы Aegis, для пути с .., для несуществующей папки, для символической ссылки, находящейся внутри рабочей области, и для рабочей области внутри или вокруг другой. Каждое изменение записывается в журнал аудита и перегенерирует профиль песочницы. Уже запущенная сессия сохраняет рабочие области, с которыми она стартовала, — включая ту, которую вы только что удалили, — что проверено на живой сессии в песочнице.aegis policy set-folder, предоставив доступ туда, куда указывала ссылка; а рабочую область, созданную внутри другой, можно было позже подменить символической ссылкой и проследовать по ней при следующем запуске. Оба сценария воспроизведены на 0.8.1 и теперь являются постоянными регрессионными тестами, которые, как доказано, падают там.policy.json отклоняются. Относительный путь разрешался относительно папки, из которой был запущен Aegis, поэтому aegis run и обёртка запуска могли применять разные песочницы из одной политики (измерено: разные дайджесты профилей). Пути должны быть абсолютными или начинаться с ~/.aegis doctor больше не сообщает о несоответствии между правкой и следующим запуском.aegis run и aegis doctor выводят реальный путь к Claude Code — считанный из обёртки, которую записал Aegis, — и /login, чтобы выполнить вход вне песочницы. Не исправлено: отозванный или истёкший токен по-прежнему отображается как действующий вход до тех пор, пока не завершится сбоем первое сообщение (статус Claude Code не сообщает об истечении срока), и вход по-прежнему невозможен внутри песочницы; для этого нужен брокер учётных данных, которого пока не существует.aegis init защищает нового пользователя, который ещё не вошёл в систему. Обнаружено при прохождении пошагового руководства в чистой среде: в 0.8.1 Claude Code, который никогда не входил в систему, по умолчанию оставался без обёртки, за вопросом, о котором документация никогда не упоминала, поэтому claude оставался вне песочницы. Теперь, как только вы соглашаетесь на песочницу, он оборачивается с громким предупреждением войти один раз вне песочницы (реальный путь к Claude Code, затем /login); завершающие шаги aegis init ставят это на первое место, а aegis doctor завершается с ошибкой, пока вы этого не сделаете. Тот же прогон также исправил вступительный и завершающий текст init, дал aegis init, aegis run и aegis doctor единую инструкцию по входу и прекратил вывод nothing to change (nothing to change) при пустом изменении.Ещё не протестировано в 0.9.0: Linux; клиенты, отличные от Claude Code; поток /login от начала до конца; пересобранное десктопное приложение.
Находится между вашим ИИ-агентом для программирования и вашей машиной:
cat .env не может её обойтиaegis doctor и контрольными точками,
создаваемыми извне песочницы под ключом, который песочница не может прочитать или записатьВпервые здесь? docs/getting-started.md — это пошаговый путь, включая два вопроса, по умолчанию отвечающих «Нет».
Следовали более ранним инструкциям, где упоминался aegis-mcp? Этот пакет — не Aegis, это не связанный с ним
проект, установленный под тем же именем импорта, aegis. Сначала удалите его:
python3 -m pip uninstall aegis-mcp
Если aegis-sandbox уже установлен, эта деинсталляция также удалит два его файла, поэтому переустановите его
после этого: python3 -m pip install --force-reinstall aegis-sandbox.
python3 -m pip install aegis-sandbox
aegis init # detects Claude Code / Cursor, asks a few questions
aegis doctor # proves the boundary is actually in place
Обновляетесь? Повторно запустите aegis init. Ваш policy.json принадлежит вам и никогда не перезаписывается
втайне от вас, поэтому новый домен песочницы не появится сам по себе — а без эндпоинта OAuth-токена клиент в песочнице
перестаёт работать, когда истекает срок действия его токена. aegis init предлагает новые хосты; принять — одно нажатие клавиши.
aegis init; aegis doctor завершается с ошибкой, если обёрнутый клиент не вошёл в системуПолная модель угроз: THREAT-MODEL.md
MIT