Vahta CLI
Vahta дает агенту использовать ваши пароли и API-ключи через зашифрованное хранилище, не показывая сами значения
- 71 ★ репозитория
- Последний коммит
Широкий доступ
Почему такой уровень
- Хранилище содержит рабочие пароли и API-ключи, а `ka run` подставляет их в окружение запускаемых агентом процессов
- Хук на PreToolUse изменяет настройки Claude Code, Cursor и Codex и разрешает агенту выполнять `ka run` и `ka list` без запросов
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add cli/vahtaОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- Хранилище содержит рабочие пароли и API-ключи, а `ka run` подставляет их в окружение запускаемых агентом процессов
- Хук на PreToolUse изменяет настройки Claude Code, Cursor и Codex и разрешает агенту выполнять `ka run` и `ka list` без запросов
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Vahta, прежний проект key-amnesia, закрывает проблему файла .env. Любой секрет в файлах проекта, истории оболочки или конфигах MCP агент может прочитать, а ключ, вставленный в чат, остается в переписке навсегда. В Vahta секреты лежат в зашифрованном хранилище (Argon2id и SecretBox). Агент только запускает команду, а значения подставляются в окружение дочернего процесса вне его поля зрения. Если команда выведет секрет, вывод цензурируется до того, как агент его увидит. Пароль от хранилища вводится только вами: когда агенту нужно одобрение, открывается отдельное окно консоли, которое агент не видит и в которое не может печатать. Команда `ka import .env` переносит открытые значения в хранилище, `ka scan` ищет оставшиеся утечки и печатает только имена, пути и счетчики, а режим --deep заглядывает в историю оболочки, конфиги MCP и записи сессий агентов. Команда `ka setup` ставит скиллы и защитный хук для Claude Code, Cursor, Codex и OpenCode. Хук блокирует опасные подкоманды `ka`, например `ka set`, `ka reveal` и `ka scan --yes`, а также строки с ключами внутри команд. Режим `per-call` спрашивает пароль при каждом использовании секрета, режим `cached` держит хранилище открытым 30 минут после `ka unlock`.
Для кого. Разработчикам, которые отдают Claude Code, Cursor или Codex рабочие ключи и пароли и хотят, чтобы агент ими пользовался, а прочитать их не мог.
Подходит, если
- В проекте лежит .env с ключами, и их нужно перенести в хранилище командой `ka import`
- Агент запускает скрипт с API-ключом, а значение должно попасть только в окружение процесса
- Перед работой с агентом хочется найти утечки секретов в проекте, истории оболочки и записях сессий через `ka scan --deep`
- Нужна защита от инлайновых ключей в командах агента: хук отклоняет их до запуска
- Несколько часов идет автономная работа агента, и хранилище открывают на 30 минут командой `ka unlock`
Не подходит, если
- Нужна защита от вредоносной программы под вашей учетной записью: любой процесс того же пользователя может обратиться к живой сессии хранилища
- Агенту выдали управление экраном, клавиатурой и мышью: изоляция окна одобрения ослабевает
- Команда сама кодирует секрет перед печатью: цензура ловит только точные копии значения
- Машина без экрана: без дисплея одобрить нечем, и операция отклоняется
Пример запроса к агенту
Перенеси ключи из .env в хранилище Vahta, а потом запусти мой скрипт deploy.py с секретом API_KEY, не показывая мне и себе значениеОграничения
- Пароль от хранилища восстановить нельзя: Argon2id и SecretBox не оставляют резервного пути.
- Цензура ловит точные копии значения, а секрет, закодированный командой перед печатью, проходит.
- Вывод команды отдается агенту целиком после завершения, живой поток не поддерживается.
- Имена секретов хранятся открытым текстом, значения нет.
- На macOS запуск изолированной консоли экспериментальный, поддерживаются Windows и Linux. В Linux терминал для пароля выбирается командой `ka config set terminal`.
- Автор объявил о переезде проекта на новое ядро: key-amnesia останется в PyPI с одним последним релизом. Лицензия Apache-2.0.
Как отключить. Хук и скиллы, поставленные командой `ka setup`, находятся в настройках агентов: чтобы убрать их, удалите записи `secret-guard` из конфигов Claude Code, Cursor и Codex и папки скиллов. Сам пакет удаляет `pip uninstall key-amnesia`. Хранилище лежит в профиле или в проекте, пока вы его не удалите.
Частые вопросы
Как поставить Vahta?
Пакет лежит в PyPI под именем key-amnesia: `pip install key-amnesia`. Команда `ka setup` ставит скиллы и хук для Claude Code, Cursor, Codex и OpenCode, после нее перезапустите сессию агента.
Видит ли агент значения секретов?
Нет. Значения подставляются в окружение запускаемого процесса, а вывод проходит цензуру. Пароль от хранилища вводится в отдельном окне консоли, недоступном агенту.
Что делать с уже существующим .env?
Командой `ka import .env .env.local` перенести значения в хранилище, потом `ka scan` покажет остатки утечек. Команда ничего не печатает из значений и сама не удаляет файлы.
Чем отличаются режимы `per-call` и `cached`?
В режиме `per-call` пароль спрашивают при каждом использовании секрета. В режиме `cached` вы один раз выполняете `ka unlock`, и хранилище остается открытым 30 минут или до `ka lock`.
Почему проект называется то key-amnesia, то Vahta?
Авторы переименовали проект и переносят код на новое ядро. Описанное в README ПО еще работает под именем key-amnesia, и пакет в PyPI не будет удален.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыagent-secrets выдает ИИ-агенту ключи на время: шифрование age, аренда секрета с TTL, журнал доступа и аварийный отзыв.
CLI и MCP-мост поверх KeePass-совместимого хранилища: агент получает один секрет только после вашего ответа, а запросы идут в журнал
Утилита хранит ключи в системной связке и подставляет их в запрос на транспортном уровне, так что агент значения не видит.
Vigils стоит между ИИ-агентом и его инструментами: скрывает секреты, спрашивает разрешения и пишет неизменяемый журнал вызовов
Скилл и CLI для .env.schema: агент видит имена, типы и правила переменных окружения, а значения секретов в его контекст не попадают
CLI elbab хранит ключи и пароли в зашифрованном виде и дает агенту запускать команды с секретами, не показывая их.
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Звезды репозитория | Главное отличие |
|---|---|---|---|
| Vahta (эта карточка) | нет | 71 | |
| agent-secrets | нет | 114 | отдельный проект по защите секретов агента |
| AgentSecrets | нет | 197 | отдельный проект по защите секретов агента, свой формат хранилища и команд |
Коротко о README
README открывается объявлением о переименовании key-amnesia в Vahta и объясняет проблему: .env рассчитан на угрозу от git, а теперь угроза — агент в проекте. Дальше короткая инструкция из команд `ka`, текст для начальной настройки агента, два режима сессии и выбор терминала для ввода пароля в Linux. Завершает раздел о границах защиты из десяти пунктов.