Skip to content

Аутентификация

CLI поддерживает несколько сценариев хранения токена с автоматическим выбором самого безопасного доступного бэкенда.

Краткая картина

Где лежит токенКак попадает тудаКогда это работает
macOS Keychaingitflic auth loginНа любом маке (бинарь security встроен)
Linux libsecretgitflic auth loginЕсли установлен secret-tool (libsecret + GNOME Keyring / KWallet)
Файл с chmod 0600fallbackЕсли ничего из вышеперечисленного не нашлось — с warning в stderr
env var GITFLIC_TOKENexport GITFLIC_TOKEN=... в шеллеУниверсально, но требует ручной настройки
--token <flagper-callДля одноразовых вызовов (CI, scripts)

Подкоманды

  • auth login — валидирует и сохраняет токен.
  • auth logout — удаляет токен.
  • auth status — показывает текущего юзера + бэкенд.
  • auth list — все аккаунты (маскированные).
  • auth switch — переключить активный аккаунт.
  • auth bind — привязать проект к аккаунту.
  • auth unbind / auth bindings — управление привязками.

Resolution chain

Когда любая команда CLI ищет токен, она проходит этот список сверху вниз:

  1. --token <value> (per-call override).
  2. GITFLIC_TOKEN env var.
  3. account-bind:<project> — если flags.project задан (per-project override, см. Per-project bindings).
  4. token:<active-account> — если auth switch установил активный аккаунт.
  5. token — legacy-ключ для default-аккаунта (если active-account не задан).
  6. die с подсказкой: no token. Run gitflic auth login --token <value> ....

Каждый уровень проверяется по очереди. Ничего не "проваливается" молча.

Угрозы и защита

Подробный разбор — auth/security.md. TL;DR:

УгрозаЗащита
Стиллер ищет ~/.zshrc, ~/.aws/credentials, ~/.netrcKeychain не попадает в plaintext grep
Бэкап диска украденKeychain зашифрован паролем юзера (без него не расшифровать)
Другой юзер на макеFile mode chmod 0600, keychain — owner-only
Стиллер запущен от твоего юзераВсе токены утекают — это game over независимо от нас
Токен ушёл в scrollback / historyalias list/get маскирует sensitive значения

Что НЕ реализовано (по сравнению с gh)

  • ❌ OAuth browser flow — GitFlic OAuth-документация не подтверждена, нет смысла делать вслепую.
  • git credential.helper интеграция — отдельная UX-история, есть в планах.
  • ❌ TTL / auto-refresh токенов — нужна поддержка expiry в API GitFlic.

Если что-то из этого нужно — отдельным коммитом.

MIT License