1Password

Установка op CLI, авторизация, чтение и подстановка секретов.

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

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

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

инфо

Ниже приведено полное определение навыка, которое Hermes загружает при его активации. Именно этот текст агент получает в качестве инструкций, когда навык задействован.

1Password CLI

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

Требования

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

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

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

Методы аутентификации

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

Задай OP_SERVICE_ACCOUNT_TOKEN в файле ${HERMES_HOME:-~/.hermes}/.env (навык запросит значение при первой загрузке). Десктопное приложение не нужно. Поддерживает op read, op inject, op run.

export OP_SERVICE_ACCOUNT_TOKEN="your-token-here"
op whoami  # проверка — должно отобразить Type: SERVICE_ACCOUNT

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

  1. Включи в настройках 1Password: Settings → Developer → Integrate with 1Password CLI
  2. Убедись, что приложение разблокировано
  3. Запусти op signin и подтверди биометрический запрос

Connect Server (self-hosted)

export OP_CONNECT_HOST="http://localhost:8080"
export OP_CONNECT_TOKEN="your-connect-token"

Настройка

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

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

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

Паттерн выполнения в Hermes (поток с десктопным приложением)

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

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

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

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

# Sign in (approve in desktop app when prompted)
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "eval \"\$(op signin --account my.1password.com)\"" Enter

# Verify auth
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "op whoami" Enter

# Example read
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- "op read 'op://Private/Npmjs/one-time password?attribute=otp'" Enter

# Capture output when needed
tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200

# Cleanup
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://, её разрешает `op run`
op run -- sh -c '[ -n "$DB_PASSWORD" ] && echo "DB_PASSWORD is set" || echo "DB_PASSWORD missing"'

Ограничения и правила

  • Никогда не выводи секреты в открытом виде, если пользователь явно не запросил значение.
  • Предпочитай op run / op inject вместо записи секретов в файлы.
  • Если команда завершается ошибкой “account is not signed in” — снова выполни op signin в той же tmux-сессии.
  • На безголовых серверах (headless/CI) используй сервисный токен вместо интерактивного op signin.

CI / безголовое окружение

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

Ссылки

перевод и редактура:

обновлено

⌕ ESC