Перейти к основному содержимому

1Password

Настройка и использование 1Password CLI (op). Используется при установке CLI, включении интеграции с десктопным приложением, входе в систему, а также чтении и внедрении секретов для команд.

Метаданные навыка​

ИсточникОпционально — установка через vibeos skills install official/security/1password
Путьoptional-skills/security/1password
Версия1.0.0
Авторarceus77-7, доработано VibeOS
ЛицензияMIT
Платформыlinux, macos, windows
Тегиsecurity, secrets, 1password, op, cli

Справочник: полный SKILL.md​

к сведению

Ниже приведено полное описание навыка, которое VibeOS загружает при его активации. Это те инструкции, которые видит агент, когда навык активен.

1Password CLI

Используйте этот навык, когда пользователь хочет управлять секретами через 1Password вместо хранения их в виде переменных окружения или файлов в открытом виде.

Требования​

  • Учётная запись 1Password
  • Установленный 1Password CLI (op)
  • Один из вариантов: интеграция с десктопным приложением, токен сервисного аккаунта (OP_SERVICE_ACCOUNT_TOKEN) или сервер Connect
  • Наличие tmux для стабильных аутентифицированных сессий при вызовах терминала VibeOS (только для работы с десктопным приложением)

Когда использовать​

  • Установка или настройка 1Password CLI
  • Вход с помощью op signin
  • Чтение ссылок на секреты, например op://Vault/Item/field
  • Внедрение секретов в конфиги/шаблоны через op inject
  • Запуск команд с секретными переменными окружения через op run

Способы аутентификации​

Сервисный аккаунт (рекомендуется для VibeOS)​

Установите OP_SERVICE_ACCOUNT_TOKEN в ${VIBEOS_HOME:-~/.vibeos}/.env (навык запросит его при первой загрузке). Десктопное приложение не требуется. Поддерживает op read, op inject, op run.

export OP_SERVICE_ACCOUNT_TOKEN="ваш-токен-здесь"
op whoami # проверка — должно показать Type: SERVICE_ACCOUNT

Интеграция с десктопным приложением (интерактивно)​

  1. Включите в десктопном приложении 1Password: Настройки → Разработчик → Интеграция с 1Password CLI
  2. Убедитесь, что приложение разблокировано
  3. Выполните op signin и подтвердите биометрический запрос

Сервер Connect (самостоятельное размещение)​

export OP_CONNECT_HOST="http://localhost:8080"
export OP_CONNECT_TOKEN="ваш-токен-connect"

Настройка​

  1. Установите CLI:
# macOS
brew install 1password-cli

# Linux (официальный пакет/документация по установке)
# Смотрите references/get-started.md для ссылок по дистрибутивам.

# Windows (winget)
winget install AgileBits.1Password.CLI
  1. Проверьте:
op --version
  1. Выберите один из способов аутентификации выше и настройте его.

Шаблон выполнения в VibeOS (для десктопного приложения)​

Команды терминала VibeOS по умолчанию неинтерактивны и могут терять контекст аутентификации между вызовами. Для надёжной работы op с интеграцией десктопного приложения выполняйте вход и операции с секретами внутри выделенной сессии tmux.

Примечание: Это НЕ требуется при использовании OP_SERVICE_ACCOUNT_TOKEN — токен сохраняется между вызовами терминала автоматически.

SOCKET_DIR="${TMPDIR:-/tmp}/vibeos-tmux-sockets"
mkdir -p "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/vibeos-op.sock"
SESSION="op-auth-$(date +%Y%m%d-%H%M%S)"

tmux -S "$SOCKET" new -d -s "$SESSION" -n shell

# Вход (подтвердите в десктопном приложении при запросе)
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "eval \"\$(op signin --account my.1password.com)\"" Enter

# Проверка аутентификации
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "op whoami" Enter

# Пример чтения
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "op read 'op://Private/Npmjs/one-time password?attribute=otp'" Enter

# Захват вывода при необходимости
tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200

# Очистка
tmux -S "$SOCKET" kill-session -t "$SESSION"

Типовые операции​

Чтение секрета​

op read "op://app-prod/db/password"

Получение OTP​

op read "op://app-prod/npm/one-time password?attribute=otp"

Внедрение в шаблон​

echo "db_password: {{ op://app-prod/db/password }}" | op inject

Запуск команды с секретной переменной окружения​

export DB_PASSWORD="op://app-prod/db/password"
op run -- sh -c '[ -n "$DB_PASSWORD" ] && echo "DB_PASSWORD установлен" || echo "DB_PASSWORD отсутствует"'

Ограничения​

  • Никогда не выводите сырые секреты пользователю, если он явно не запросил значение.
  • Предпочитайте op run / op inject вместо записи секретов в файлы.
  • Если команда завершается ошибкой «учётная запись не авторизована», выполните op signin снова в той же сессии tmux.
  • Если интеграция с десктопным приложением недоступна (headless/CI), используйте токен сервисного аккаунта.

Примечание для CI / headless-сред​

Для неинтерактивного использования аутентифицируйтесь через OP_SERVICE_ACCOUNT_TOKEN и избегайте интерактивного op signin. Сервисные аккаунты требуют CLI версии 2.18.0+.

Ссылки​