EnvLatch CLI
EnvLatch хранит API-ключи в связке ключей macOS и дает команде агента только выбранные переменные окружения, без файлов .env
- 99 ★ репозитория
- Последний коммит
- MIT
Широкий доступ
Почему такой уровень
- Хранит и подставляет в процессы API-ключи и токены: любая запущенная программа видит выбранные значения
- Широкий запуск `envlatch run -- команда` без `--using` открывает программе все сохраненные ключи
Установка
- Работает в
Ручная установка
git clone https://github.com/Raylinkh/envlatch.git && cd envlatch && ./scripts/install.shНужны macOS 13 или новее и Xcode 16 либо Swift 6. Установщик собирает EnvLatch.app в `~/Applications`, ставит команду `~/.local/bin/envlatch` и скилл в `~/.agents/skills/envlatch` со ссылками для Codex, Claude Code и Gemini CLI.
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- Хранит и подставляет в процессы API-ключи и токены: любая запущенная программа видит выбранные значения
- Широкий запуск `envlatch run -- команда` без `--using` открывает программе все сохраненные ключи
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
EnvLatch — нативное приложение для macOS 13 и новее с командой `envlatch`. Ключи вроде OPENAI_API_KEY, ANTHROPIC_API_KEY или GITHUB_TOKEN сохраняются в обычной связке ключей и никуда не синхронизируются. Команда `envlatch run --using ANTHROPIC_API_KEY -- claude` запускает программу с нужной переменной окружения, поэтому код и SDK читают ее как из .env. Несколько ключей выбираются повторением `--using`, а постоянный набор сохраняется как группа командой `envlatch groups create`. К ключу можно привязать метаданные эндпоинта: тип API (Anthropic, OpenAI Chat Completions, OpenAI Responses, Gemini), базовый адрес HTTPS и имя переменной, которую ждет клиент. Так ключ MINIMAX_API_KEY приходит в клиент Anthropic как ANTHROPIC_AUTH_TOKEN вместе с ANTHROPIC_BASE_URL. Перед чтением значений EnvLatch проверяет весь выбор целиком и отвергает дубли, пропавшие ключи и конфликты привязок. В комплекте идет скилл: он учит агента смотреть только имена ключей и групп (`envlatch list`, `envlatch groups`, `envlatch doctor`) и оборачивать обычную команду в `envlatch run`. Команд показа значений, копирования в буфер, экспорта и `eval` в программе нет.
Для кого. Разработчикам на macOS, которые запускают Claude Code, Codex или скрипты с несколькими API-ключами и устали копировать .env между проектами.
Подходит, если
- Один ключ OpenAI нужен в пяти проектах, и хочется хранить его в одном месте
- Агент запускает тесты, которым нужны только OPENAI_API_KEY и GITHUB_TOKEN, а остальные ключи ему видеть незачем
- Клиент с Anthropic-совместимым API получает ключ другого провайдера через `envlatch run` и привязку эндпоинта
- Ключи не должны попадать в историю терминала, профиль оболочки и репозиторий
Не подходит, если
- Нужна защита от вредоносного агента или зависимости: запущенный процесс видит все выбранные переменные, песочницы здесь нет
- Работа идет на Linux или Windows: приложение собирается только под macOS 13 и новее
- Ключи нужны на нескольких машинах: синхронизации и серверной части нет
- Команда использует общий менеджер секретов вроде 1Password или Vault: EnvLatch его не заменяет
Пример запроса к агенту
Поставь EnvLatch, запусти тесты проекта через envlatch run с ключами OPENAI_API_KEY и GITHUB_TOKEN и не показывай значения ключейОграничения
- Подстановка переменных окружения не изолирует секрет: запущенный процесс и его потомки читают все выбранные значения, а сбои и отладочные инструменты могут раскрыть память процесса. Автор советует ключи с узкими правами и лимитами расходов у провайдера.
- Установка собирает приложение из исходников (нужны macOS 13 или новее и Xcode 16 либо Swift 6). Сборка подписана локально без сертификата разработчика, после пересборки macOS может снова запросить доступ к связке ключей.
- EnvLatch сохраняет унаследованное окружение: ключи, уже экспортированные родительской оболочкой, он не вычищает.
- Внутри песочницы агента счетчик `saved_key_count` может показать ноль, хотя ключи есть. Команду нужно запускать обычным путем одобрения с доступом к связке ключей.
Как отключить. Удалите приложение из `~/Applications` и символическую ссылку `~/.local/bin/envlatch`, затем скилл `~/.agents/skills/envlatch` вместе со ссылками для Codex, Claude Code и Gemini CLI. Сохраненные ключи остаются в связке ключей macOS, удалять их можно в Keychain Access.
Частые вопросы
Как запустить Claude Code с ключом из связки ключей macOS?
Выполните `envlatch run --using ANTHROPIC_API_KEY -- claude`. Программа claude стартует с переменной ANTHROPIC_API_KEY, а в .env и профиле оболочки ключ не появляется.
Может ли агент прочитать значение ключа через EnvLatch?
Напрямую нет: команд показа, копирования, экспорта и `eval` в EnvLatch нет, а скилл запрещает агенту выводить значения. Запущенная программа при этом читает выбранные переменные, поэтому выдавайте ключи с узкими правами.
Как дать программе несколько ключей сразу?
Повторите `--using` для каждого ключа или сохраните набор командой `envlatch groups create "Backend" --using OPENAI_API_KEY --using GITHUB_TOKEN` и запускайте `envlatch run --using "Backend"`. Группу нельзя смешивать с отдельными ключами в одном запуске.
Работает ли EnvLatch с Cursor или Cline?
Скилл ставит ссылки для Codex, Claude Code и Gemini CLI, и это лишь удобство: ограничения на агентов нет. Другому агенту достаточно прочитать скилл из ~/.agents/skills/envlatch и вызывать `envlatch run`.
Что делает `envlatch doctor`?
Команда сообщает число ключей, видимых текущему процессу, и состояние установки. Если песочница хозяина скрывает связку ключей, она завершается с ошибкой `keychain_visibility_warning`, и тогда команду стоит перезапустить с доступом к связке ключей.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыCLI elbab хранит ключи и пароли в зашифрованном виде и дает агенту запускать команды с секретами, не показывая их.
Скилл и CLI для .env.schema: агент видит имена, типы и правила переменных окружения, а значения секретов в его контекст не попадают
Vahta дает агенту использовать ваши пароли и API-ключи через зашифрованное хранилище, не показывая сами значения
Lade выдает команде секреты и доступ к закрытой сети только на время ее работы, а потом убирает, для людей и для агентов
dotenvx, CLI для переменных окружения, шифрует конфигурацию; приложение получает ее значения только с ключом расшифрования.
CLI и MCP-мост поверх KeePass-совместимого хранилища: агент получает один секрет только после вашего ответа, а запросы идут в журнал
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Звезды репозитория | Главное отличие |
|---|---|---|---|
| EnvLatch (эта карточка) | нет | 99 | |
| agent-secrets | нет | 114 | выдает агенту секреты на время с шифрованием age и журналом доступа |
| dotenvx | нет | 5 880 | шифрует конфигурацию .env, значения получает только приложение с ключом |
Коротко о README
В репозитории лежат приложение на SwiftUI, команда envlatch и портативный скилл. README объясняет установку из исходников, сохранение ключей в графическом интерфейсе, запуск через `envlatch run`, группы и метаданные эндпоинтов. Отдельный раздел описывает границу безопасности: подстановка переменных защищает от случайных утечек в репозиторий, историю и логи, но не от вредоносного процесса.