You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Calendar: aliases, subscribe, and selector parity make multi-calendar workflows much easier. (#393, #327, #319) — thanks @salmonumbrella and @cdthompson.
Admin: add Workspace Admin Directory commands for users and groups, including user list/get/create/suspend and group membership list/add/remove. (#403) — thanks @dl-alexandre.
Auth: add Application Default Credentials mode via GOG_AUTH_MODE=adc for Workload Identity, Cloud Run, and local gcloud ADC flows without stored OAuth refresh tokens. (#357) — thanks @tengis617.
Auth: add --access-token / GOG_ACCESS_TOKEN for direct access-token auth in headless or CI flows, bypassing stored refresh tokens. (#419) — thanks @mmkal.
Auth: add auth add|manage --listen-addr plus --redirect-host for browser OAuth behind proxies or remote loopback forwarding. (#227) — thanks @cyberfox.
Auth: add auth add --redirect-uri for manual/remote OAuth flows, so custom callback hosts can be reused across the printed auth URL, state cache, and code exchange. (#398) — thanks @salmonumbrella.
Auth: add --extra-scopes to auth add for appending custom OAuth scope URIs beyond the built-in service scopes. (#421) — thanks @peteradams2026.
Docs: add --tab-id to editing commands so write/update/insert/delete/find-replace can target a specific Google Docs tab. (#330) — thanks @ignacioreyna.
Docs: extend docs find-replace with --first, --content-file, Markdown replacement, inline image insertion, and image sizing syntax. (#305) — thanks @chparsons.
Docs: add --pageless to docs create, docs write, and docs update to switch documents into pageless mode after writes. (#300) — thanks @shohei-majima.
Docs: add native Google Docs Markdown export via docs export --format md. (#282) — thanks @fprochazka.
Docs: add native Google Docs HTML export via docs export --format html. (#141) — thanks @in-liberty420.
Sheets: add named range management (sheets named-ranges) and let range-based Sheets commands accept named range names where GridRange-backed operations are needed. (#278) — thanks @TheCrazyLex.
Sheets: add add-tab, rename-tab, and delete-tab commands for managing spreadsheet tabs, with delete dry-run/confirmation guardrails. (#309) — thanks @JulienMalige.
Sheets: add merge, unmerge, number-format, freeze, resize-columns, and resize-rows commands for spreadsheet layout/format control. (#320) — thanks @Shehryar.
Sheets: add sheets update-note / set-note to write or clear cell notes across a range. (#430) — thanks @andybergon.
Sheets: add sheets find-replace to replace text across a spreadsheet or a specific tab, with exact-match, regex, and formula search options. (#341) — thanks @Shehryar.
Sheets: add sheets insert to insert rows/columns into a sheet. (#203) — thanks @andybergon.
Sheets: add sheets create --parent to place new spreadsheets in a Drive folder. (#424) — thanks @ManManavadaria.
Sheets: add sheets read-format to inspect userEnteredFormat / effectiveFormat per cell. (#284) — thanks @nilzzzzzz.
Sheets: add sheets links (alias hyperlinks) to list cell links from ranges, including rich-text links. (#374) — thanks @omothm.
Forms: add form update/question-management commands plus response watch create/list/delete/renew, with delete-question validation and confirmation guardrails. (#274) — thanks @alexknowshtml.
Slides: add create-from-template with --replace / --replacements, dry-run support, and template placeholder replacement stats. (#273) — thanks @penguinco.
Calendar: add calendar alias list|set|unset, and let calendar commands resolve configured aliases before API/name lookup. (#393) — thanks @salmonumbrella.
Calendar: let calendar freebusy / calendar conflicts accept --cal, names, indices, and --all like calendar events. (#319) — thanks @salmonumbrella.
Calendar: add calendar subscribe (aliases sub, add-calendar) to add a shared calendar to the current account’s calendar list. (#327) — thanks @cdthompson.
Gmail: add watch serve --history-types filtering (messageAdded|messageDeleted|labelAdded|labelRemoved) and include deletedMessageIds in webhook payloads. (#168) — thanks @salmonumbrella.
Gmail: add gmail labels rename to rename user labels by ID or exact name, with system-label guards and wrong-case ID safety. (#391) — thanks @adam-zethraeus.
Gmail: add gmail messages modify for single-message label changes, complementing thread- and batch-level modify flows. (#281) — thanks @zerone0x.
Gmail: add gmail filters export to dump filter definitions as JSON to stdout or a file for backup/script workflows. (#119) — thanks @Jeswang.
Keep: add keep create for text/checklist notes and keep delete for note removal. (#413) — thanks @jgwesterlund.
Contacts: support --org, --title, --url, --note, and --custom on create/update; include custom fields in get output with deterministic ordering. (#199) — thanks @phuctm97.
Contacts: add --relation type=person to contact create/update, include relations in text contacts get, and cover relation payload updates. (#351) — thanks @karbassi.
Contacts: add --address to contact create/update and include addresses in text contacts get. (#148) — thanks @beezly.
Drive: add drive ls --all (alias --global) to list across all accessible files; make --all and --parent mutually exclusive. (#107) — thanks @struong.
Chat: add chat messages reactions create|list|delete to manage emoji reactions on messages; chat messages react <message> <emoji> as a shorthand for creating reactions; reaction is an alias for reactions. (#426) — thanks @fernandopps.
Tasks: add --recur / --recur-rrule aliases for repeat materialization, including RRULE INTERVAL support for generated occurrences. (#408) — thanks @salmonumbrella.
Fixed
Google API: use transport-level response-header timeouts for API clients while keeping token exchanges bounded, so large downloads are not cut short by http.Client.Timeout. (#425) — thanks @laihenyi.
Timezone: embed the IANA timezone database so Windows builds can resolve calendar timezones correctly. (#388) — thanks @visionik.
Auth: persist rotated OAuth refresh tokens returned during API calls so later commands keep working without re-auth. (#373) — thanks @joshp123.
Auth: allow pure service-account mode when the configured subject matches the service account itself, instead of forcing domain-wide delegation impersonation. (#399) — thanks @carrotRakko.
Auth: keep Keep-only service-account fallback isolated to Keep commands so other Google services do not accidentally pick it up. (#414) — thanks @jgwesterlund.
Auth: add --gmail-scope full|readonly, and disable include_granted_scopes for readonly/limited auth requests to avoid Drive/Gmail scope accumulation. (#113) — thanks @salmonumbrella.
Auth: preserve scope-shaping flags in the remote step-2 replay guidance for auth add --remote. (#427) — thanks @doodaaatimmy-creator.
Calendar: preserve full RRULE values and recurring-event timezones during updates so recurrence edits don’t lose BYDAY lists or hit missing-timezone API errors. (#392) — thanks @salmonumbrella.
Calendar: let recurring calendar update --scope=future and calendar delete --scope=future start from an instance event ID by resolving the parent series first. (#319) — thanks @salmonumbrella.
Calendar: use Calendars.Get for timezone lookups so service-account flows don’t 404 on calendarList/primary. (#325) — thanks @markwatson.
Calendar: hide cancelled/deleted events from calendar events list output by explicitly setting showDeleted=false. (#362) — thanks @sharukh010.
Calendar: reject ambiguous calendar-name selectors for calendar events instead of guessing. (#131) — thanks @salmonumbrella.
Calendar: respond patches only attendees to avoid custom reminders validation errors. (#265) — thanks @sebasrodriguez.
Calendar: force-send minutes=0 for --reminder popup:0m so zero-minute popup reminders survive Google Calendar API JSON omission rules. (#316) — thanks @salmonumbrella.
Calendar: clarify that RFC3339 --from/--to timestamps must include a timezone while keeping date and relative-time help intact. (#409) — thanks @dbhurley.
Gmail: add a fetch delay in watch serve so History API reads don't race message indexing. (#397) — thanks @salmonumbrella.
Gmail: preserve the selected --client during watch serve push handling instead of falling back to the default client. (#411) — thanks @chrysb.
Gmail: allow Workspace-managed send-as aliases with empty verification status in send and drafts create. (#407) — thanks @salmonumbrella.
Gmail: fall back to MimeType charset hints when Content-Type headers are missing so GBK/GB2312 message bodies decode correctly. (#428) — thanks @WinnCook.
Gmail: drafts update --quote now picks a non-draft, non-self message from thread fallback (or errors clearly), avoiding self-quote loops and wrong reply headers. (#394) — thanks @salmonumbrella.
Gmail: preserve Cc metadata output in plain gmail get --format metadata even when Gmail returns uppercase CC headers. (#343) — thanks @salmonumbrella.
Gmail: gmail archive|read|unread|trash convenience commands now honor --dry-run and emit action-specific dry-run ops. (#385) — thanks @yeager.
Sheets: harden sheets format against boarders typo (JSON and field mask), with clearer error messages. (#284) — thanks @nilzzzzzz.
Sheets: force-send empty note values so sheets update-note --note '' reliably clears notes via the API. (#341) — thanks @Shehryar.
Contacts: send the required copyMask when deleting "other contacts", avoiding People API 400 errors. (#384) — thanks @rbansal42.
Groups: include required label filters in transitive group searches so groups list doesn’t 400 on Cloud Identity. (#315) — thanks @salmonumbrella.
Sheets: make sheets metadata --plain emit real TSV tab delimiters, with regression coverage for plain tabular sheet output. (#298) — thanks @mahsumaktas.
CLI: show root help instead of a parse error when gog is run with no arguments. (#342) — thanks @cstenglein.
CLI: include the current partial token in fish shell completion so gog __complete sees the active word under the cursor. (#123) — thanks @GiGurra.
Security & Reliability
Secrets: verify keyring token writes by reading them back, so macOS headless Keychain failures return an actionable error instead of silently storing 0 bytes. (#270) — thanks @zerone0x.
Security: require confirmation before public Drive shares, Gmail forwarding filters, and Gmail delegate grants in no-input/agent flows. (#317) — thanks @salmonumbrella.
Security: redact stored Gmail watch webhook bearer tokens in gmail watch status text and JSON output unless --show-secrets is set. (#136) — thanks @paveg.
Tooling & Docs
Docs: update install docs to use the official Homebrew core formula (brew install gogcli). (#361) — thanks @zeldrisho.
Contacts: fix grouped parameter types in CRUD helpers to restore builds on newer Go toolchains. (#355) — thanks @laihenyi.
CI: validate release tags and quote the checkout ref in the release workflow to block tag-script injection on manual releases. (#299) — thanks @salmonumbrella.
Build: refresh the dependency stack to Go 1.26.1, current Go indirects, GitHub Actions v6/v7 pins, and current Cloudflare worker dependencies.
Keep: request the writable Keep service-account scope now that note create/delete is supported. (#413) — thanks @jgwesterlund.