Если у вас уже подключён Google Workspace и вы хотите отдать рутину агенту — почту, календарь, диск, документы — вам нужен один бинарь, а не десять вкладок и не самописная обвязка над каждым API. gogcli — это open-source CLI на Go, который закрывает весь Workspace из терминала и одинаково работает из shell-скриптов и из Codex.

Что это

Gogcli — open-source проект (репозиторий openclaw/gogcli, сайт документации gogcli.sh). Один бинарник на Go, который заменяет десяток разрозненных клиентов под каждый сервис Google. Под капотом — стандартные Google APIs, сверху — workflow-команды под конкретные задачи: найти письмо, прочитать безопасно, создать пользователя, отредактировать таблицу, собрать презентацию.

Проект не аффилирован с Google. Лицензия — MIT, можно использовать в коммерческих продуктах, форкать, дорабатывать под себя.

Ключевое правило: gogcli — это не «CLI-обёртка над каждым API». Это workflow-команды, поверх которых уже есть контракт вывода (JSON/TSV), коды возврата и слои безопасности. Агент работает по контракту, а не угадывает флаги.

gws от Google Workspace — другой CLI, построенный на Discovery Service. Тоже легитимный и публичный (github.com/googleworkspace/cli), но с другим подходом: gws ближе к сырому API и подхватывает новые методы динамически. gogcli ставит во главу угла предсказуемый вывод, безопасность по слоям и удобную работу с агентом — об этом подробно ниже.

Зачем нужно

  • Один инструмент для всех ключевых сервисов Workspace — Gmail, Calendar, Drive, Docs, Sheets, Slides, Forms, Contacts, Tasks, Apps Script, Admin.
  • Стабильный вывод: флаг —json даёт предсказуемый JSON в stdout, флаг —plain — TSV. Прогресс и предупреждения идут в stderr, поэтому пайпы не ломаются.
  • Runtime-контракт для агента: команда gog schema —json выдаёт машинно-читаемое описание всех команд, коды выхода и состояние безопасности. Агент читает схему один раз и дальше работает по контракту.
  • Слои безопасности встроены в сам инструмент: режим только-чтение (—readonly), запрет отправки Gmail (—gmail-no-send), command guards, обёртка недоверенного контента (—sanitize-content), готовые safety-профили.
  • Несколько аккаунтов и OAuth-клиентов в одном конфиге: подходит для работы, личного ящика и админского контура одновременно.
  • Режим MCP-сервера: gogcli умеет отдавать типизированные и заранее разрешённые инструменты агентным клиентам — Codex подключается напрямую, без общего мостика в shell.

Как устроено

Сервис GoogleЧто делает gogcli
GmailПоиск по телу писем, чтение, отправка и черновики, фильтры, экспорт rules.xml
CalendarСобытия на сегодня и за период, вторичные календари, создание и обновление встреч
DriveАудит дерева папок и прав, размеры, инвентаризация (без изменений по умолчанию)
DocsЗагрузка Markdown напрямую, форматирование, атомарные пакеты правок
SheetsДобавление строк, изменение графиков, работа с таблицами
SlidesСборка презентации из Markdown, рендер превью слайдов
AdminСоздание пользователей, орг-юниты и группы через Admin SDK и domain-wide delegation
Forms / Contacts / Tasks / ChatШаблоны форм, контакты, задачи, чат-пространства
Apps Script / Classroom / YouTubeУправление скриптами, курсами, видео (mutate только под явные флаги)
Keep / Groups / Search Console / AnalyticsЗаметки, группы, вебмастер, аналитика (через service account)

Внутри gogcli — единый движок workflow-команд, поверх которого лежит тонкий слой Google API. На каждый сервис — свои команды с предсказуемыми флагами. Все write-операции по умолчанию требуют явного подтверждения (например, —apply), read-only операции безопасны из коробки.

Контракт вывода — отдельный модуль: —json собирает структурированный ответ, —plain — TSV для awk/cut, всё остальное (прогресс, подсказки) уходит в stderr. Это позволяет запускать gogcli в пайпах и CI без парсинга человекочитаемого вывода.

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

СитуацияПодходитПочему
Codex/Claude должен читать почту для контекстаДаJSON-вывод + —sanitize-content защищает от prompt-injection
Codex ведёт таблицу задач в Google SheetsДаsheets table append дописывает строки идемпотентно
Codex собирает еженедельный отчёт в Docs/SlidesДаdocs format и slides create-from-markdown работают из Markdown
Codex должен создавать пользователей/орг-юниты в WorkspaceДа, с ограничениямиНужен admin-аккаунт и domain-wide delegation
Агент рассылает письма без участия человекаС осторожностьюТолько через явные —allow-write, иначе —gmail-no-send блокирует отправку
Чисто discovery-ориентированная работа с любым новым APIНет, лучше gwsgws динамически подхватывает новые методы из Google Discovery
Локальный однопользовательский скрипт без агентаДопустимоgogcli избыточен, можно проще через curl
Свежесозданный gmail-аккаунт для массовой рассылкиНетGoogle блокирует такие аккаунты, риск бана

Пример

Типичный сценарий — Codex собирает утреннюю сводку: входящие за неделю, расписание на сегодня и краткий аудит папки на диске. Все три действия — по одной команде с предсказуемым JSON:

# 1. Входящие за неделю в JSON для агента
gog --account you@example.com --readonly \
  gmail search 'newer_than:7d' --max 10 --json

# 2. Прочитать конкретное письмо в безопасном виде
# (тело обёрнуто, чтобы текст из письма не стал командой)
gog gmail get <messageId> --sanitize-content --json

# 3. Расписание на сегодня
gog calendar events --today --json

# 4. Аудит папки на диске — только просмотр
gog drive audit sharing --parent <folderId> --json

Все четыре команды безопасны из коробки: ничего не отправляется и не удаляется, агент парсит JSON и формирует сводку. Если сводка нужна в виде документа — следом можно записать её в Docs через gog docs.

Подключение как MCP-сервер для Codex

У gogcli есть режим MCP-сервера: он отдаёт типизированные и заранее разрешённые инструменты агентным клиентам. По умолчанию MCP-сервер работает только на чтение. Write-инструменты скрыты, пока вы явно не запустите сервер с —allow-write, а —allow-tool сужает набор до конкретных инструментов или сервисов.

{
  "command": "gog",
  "args": [
    "--account", "you@example.com",
    "--enable-commands-exact", "mcp,docs.cat,sheets.get",
    "mcp",
    "--allow-tool", "docs_get,sheets_read_range"
  ]
}

С такой конфигурацией агент не сможет ничего изменить в Workspace, пока вы сами не откроете запись через —allow-write. Это и есть смысл «слоёв безопасности»: права расширяются осознанно и только под конкретную задачу.

Установка и быстрый старт

Полная настройка занимает 10–15 минут. Сначала — Homebrew (на macOS) или другой способ установки со страницы загрузки gogcli.sh. Дальше — OAuth-клиент в Google Cloud Console и авторизация рабочего аккаунта.

# Шаг 1. Установка (macOS)
brew install openclaw/tap/gogcli

# Шаг 2. Сохранить OAuth-клиент (файл client_secret_....json)
gog auth credentials ~/Downloads/client_secret_....json

# Шаг 3. Авторизовать рабочий аккаунт
# Сразу сужаем доступ до нужных сервисов:
gog auth add you@yourcompany.com \
  --services gmail,calendar,drive,docs,sheets,contacts

# Шаг 4. Проверить, что всё работает
gog auth doctor --check

# Шаг 5. Тестовая команда
export GOG_ACCOUNT=you@yourcompany.com
gog calendar events --today

OAuth-клиент — это «пропуск», который вы выдаёте gogcli от имени своего Google-проекта. Он определяет, к каким сервисам разрешён доступ. Один раз настроили в Cloud Console — дальше gogcli работает с этим клиентом.

Важно: client_secret.json и токены доступа — это ключи от вашей почты и диска. gogcli хранит их в системном keyring (по умолчанию) или в шифрованном файле (GOG_KEYRING_BACKEND=file), но не в открытом виде. Не коммитьте client_secret.json в репозиторий и не передавайте агенту его содержимое.

Безопасность и лимиты

gogcli бесплатен, ограничения — это квоты Google API на ваш OAuth-проект. Для личного и командного использования их обычно хватает с запасом. При массовых операциях (тысячи писем, крупные миграции) держите квоты в голове и разносите задачи по времени.

OAuth-приложение в режиме Testing ограничено: refresh-токены для user-data scopes истекают через 7 дней. Для рабочего CLI-приложения нужно Publish app в Google Auth Platform → Audience — это переводит приложение в In production (без верификации Google). Unverified app работает в production, но для sensitive scopes показывает предупреждение и имеет lifetime-cap в 100 пользователей. Для публичных приложений проходят полную верификацию Google.

Workspace-only API (Admin Directory, Cloud Identity Groups, Chat, Keep, domain-wide delegation) требуют managed-домена. Consumer gmail.com работает только для user-API: Gmail, Calendar, Drive, Docs, Sheets, Slides, Forms, Apps Script, Analytics, Search Console, Contacts/People, Tasks, Classroom.

Ограничения

Ограничения

Жёсткие границы инструмента — фиксируйте их до того, как отдадите gogcli агенту.

Зависимость от OAuth-проекта

нужен собственный OAuth-клиент в Google Cloud Console и включённые API; расходы — на стороне Google.

Квоты Google API

на массовых операциях (тысячи писем, миграции) упираетесь в дневные/минутные лимиты проекта.

Workspace-only API

Admin Directory, Cloud Identity Groups, Chat, Keep, domain-wide delegation работают только на managed-домене.

Refresh-токен в testing-режиме

OAuth-приложение в Testing теряет refresh-токен через 7 дней; для продакшна нужен Publish app.

Unverified app cap

неподтверждённое приложение ограничено 100 пользователями и показывает предупреждение для sensitive scopes.

Свежие аккаунты под нагрузкой

Google блокирует новые ящики, если на них сразу идёт ботоподобная активность — массовое чтение или рассылки.

MIT-лицензия без SLA

open-source без официальной поддержки Google; критичные операции дублируйте ручной проверкой.

Антипаттерны

Антипаттерны

Типовые ошибки, которые ломают безопасность или приводят к бану аккаунта.

Отдавать бинарь без —readonly

агент с полными правами способен разослать письма или удалить файлы — стартуйте с read-only профиля и расширяйте осознанно.

Передавать агенту client_secret.json

это ключ от вашей почты и диска — коммитить в репозиторий, класть в AGENTS.md или совать в контекст агента нельзя.

Игнорировать —sanitize-content на входящих

без обёртки текст из чужого письма может выполниться как команда — это классическая prompt-injection через почту.

Запускать MCP-сервер с —allow-write без аудита

сразу открывать запись на все инструменты — антипаттерн; сначала dry-run и read-only, потом явный —allow-tool под задачу.

Делать gogcli на свежем gmail-аккаунте

аккаунт без истории, массовое чтение или рассылки — прямой путь к бану; используйте рабочий домен с историей.

Чеклист

Чеклист

Перед тем как подключать gogcli к Codex как MCP-сервер, пройдите по этим пунктам.

OAuth-клиент создан

в Google Cloud Console есть Desktop OAuth client, client_secret.json скачан и сохранён вне репозитория.

Нужные API включены

в том же Cloud-проекте включены Gmail/Calendar/Drive/Docs/Sheets/API, под которые планируете вызовы.

Аккаунт авторизован с минимальными scope

флаг —services при gog auth add сразу ограничивает набор сервисов; не авторизуйте «всё по максимуму».

Бинарь запускается с —readonly

для Codex-сценариев стартовая конфигурация идёт с —readonly и/или —gmail-no-send.

MCP-конфиг идёт с явным —allow-tool

вместо голого mcp указан список конкретных инструментов; —allow-write появляется только под конкретную задачу.

client_secret.json не в Git

файл добавлен в .gitignore и хранится отдельно от проекта; gogcli складывает токены в системный keyring или шифрованный файл.

Тестовый прогон отработал

gog auth doctor —check проходит, gog calendar events —today возвращает ожидаемое расписание.