Compare commits

...

332 Commits

Author SHA1 Message Date
Peter Steinberger
505c4df730
ci: update homebrew tap on release
Some checks failed
ci / darwin-cgo-build (push) Has been cancelled
ci / test (push) Has been cancelled
ci / worker (push) Has been cancelled
ci / windows (push) Has been cancelled
2026-05-07 03:56:52 +01:00
Peter Steinberger
cde550f749
ci: fix release signing guard
Some checks failed
ci / test (push) Waiting to run
ci / worker (push) Waiting to run
ci / windows (push) Waiting to run
ci / darwin-cgo-build (push) Waiting to run
pages / Deploy docs (push) Has been cancelled
2026-05-06 09:56:55 +01:00
Peter Steinberger
05914139e5
docs(site): polish homepage and code highlighting 2026-05-06 09:55:38 +01:00
Peter Steinberger
2c9c1dcc8b
build: sign macos release binaries
Some checks failed
ci / test (push) Has been cancelled
ci / worker (push) Has been cancelled
ci / windows (push) Has been cancelled
ci / darwin-cgo-build (push) Has been cancelled
pages / Deploy docs (push) Has been cancelled
2026-05-05 17:06:03 +01:00
Peter Steinberger
56755e94ec
fix: remove stale classroom nolint 2026-05-05 08:55:21 +01:00
Peter Steinberger
c65c88304b
fix: satisfy lint after refactor 2026-05-05 08:52:50 +01:00
Peter Steinberger
917e4b98b4
refactor(cmd): split drive command modules 2026-05-05 08:49:02 +01:00
Peter Steinberger
ad59efba58
refactor(cmd): reuse paged list helper 2026-05-05 08:48:59 +01:00
Peter Steinberger
4a2a72fa4e
test(cmd): share google service fixtures 2026-05-05 08:48:54 +01:00
Peter Steinberger
cd37734c99
refactor(googleapi): share service constructor setup 2026-05-05 08:48:51 +01:00
Peter Steinberger
20afed7f4b
refactor(cmd): share raw response helpers 2026-05-05 08:30:06 +01:00
Peter Steinberger
4e61efe0b8
docs: add docs site theme and social card 2026-05-05 08:25:41 +01:00
Peter Steinberger
e8e04a49f9
docs: refresh docs site 2026-05-05 07:39:03 +01:00
Peter Steinberger
e322aad2e9
docs: add feature coverage pages 2026-05-05 07:17:38 +01:00
Peter Steinberger
8b78a94c76
docs: rewrite readme 2026-05-05 07:04:07 +01:00
Peter Steinberger
dd39bb794c
fix(release): use api workflow checks 2026-05-05 06:54:43 +01:00
Peter Steinberger
e0338d5954
release: v0.15.0
Some checks failed
ci / test (push) Has been cancelled
ci / worker (push) Has been cancelled
ci / windows (push) Has been cancelled
ci / darwin-cgo-build (push) Has been cancelled
2026-05-05 06:49:37 +01:00
Peter Steinberger
62a7257aba
feat(contacts): add dedupe preview (#555)
Adds a read-only contacts dedupe preview command with JSON/table output, generated command docs, README/spec docs, and changelog credit for the extracted idea from #116.\n\nCo-authored-by: Rohan Patnaik <rohan-patnaik@users.noreply.github.com>
2026-05-05 06:37:36 +01:00
Peter Steinberger
e9c496efd5
feat(drive): add read-only reporting commands (#554)
Co-authored-by: Rohan Patnaik <rohan-patnaik@users.noreply.github.com>
2026-05-05 05:36:55 +01:00
Peter Steinberger
e8e1ac4635
feat(gmail): export filters as WebUI XML (#553)
* feat(gmail): export filters as WebUI XML

* fix(gmail): satisfy filter export lint
2026-05-05 04:02:53 +01:00
Peter Steinberger
3ed52354a0
docs(skill): improve gog agent guidance (#552)
Co-authored-by: Tim Pietrusky <timpietrusky@gmail.com>
2026-05-05 02:47:31 +01:00
Peter Steinberger
b836495775
feat(sheets): add conditional formatting and banding
Adds Google Sheets conditional formatting and alternating color banding commands, with force-guarded clears, docs, regression tests, and live Google smoke verification.\n\nCo-authored-by: gobang <50824182+codBang@users.noreply.github.com>
2026-05-05 02:14:13 +01:00
Peter Steinberger
aa7c0a2f90
feat(sheets): clear table data rows
Adds header-safe table data row clearing for Google Sheets tables, including --force enforcement, footer-skip range calculation, docs, tests, and live Google smoke verification.
2026-05-04 23:14:42 +01:00
Peter Steinberger
5d3b1c0980
feat(sheets): append table rows
Adds table-aware row appends for Google Sheets tables, including docs, generated command page, width validation, and live Google smoke verification.
2026-05-04 10:09:36 +01:00
Peter Steinberger
322695f78c
feat(sheets): add table basics
Adds Google Sheets table list/get/create/delete commands, local table column type validation, generated command docs, and a dedicated Sheets tables docs page.\n\nCo-authored-by: Pedro Henrique Gomes Venturott <27008096+Pedrohgv@users.noreply.github.com>
2026-05-04 09:41:02 +01:00
Peter Steinberger
b4d6f559c3
feat(docs): add rich text formatting commands 2026-05-04 08:28:38 +01:00
Peter Steinberger
7b288cc922
feat(raw): add lossless API dump commands
Co-authored-by: Ali Karbassi <ali@karbassi.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-04 07:55:15 +01:00
Peter Steinberger
8b8fd09fa2
docs: add generated command pages site 2026-05-04 07:25:56 +01:00
Peter Steinberger
33284f03bb
feat(gmail): add sanitized content reads
Co-authored-by: urasmutlu <urasmutlu@gmail.com>
2026-05-04 07:04:45 +01:00
Peter Steinberger
d37caabdd7
feat(install): add Docker image publishing 2026-05-04 06:21:48 +01:00
Peter Steinberger
ef8e634e04
docs(changelog): credit safety profile hardening 2026-05-04 05:55:33 +01:00
Drew Burchfield
46900109e0
fix(safety): compile baked policy to code to resist binary tampering
Compile baked safety-profile policies into generated hash switches so the raw allow/deny rule strings are no longer embedded as a patchable YAML blob.

Verification before merge:
- `go test ./cmd/bake-safety-profile ./internal/safetyprofile ./internal/cmd`
- `make lint`
- `./build-safe.sh safety-profiles/agent-safe.yaml -o bin/gog-agent-safe-review`
- `./build-safe.sh safety-profiles/readonly.yaml -o bin/gog-readonly-review`
- runtime block checks for agent-safe and readonly baked binaries

Co-authored-by: drewburchfield <drewburchfield@gmail.com>
2026-05-04 05:55:05 +01:00
Peter Steinberger
6fd874075e
feat(calendar): add event ownership transfer 2026-05-04 05:50:28 +01:00
Peter Steinberger
c453cbd5a0
feat(calendar): add meet updates 2026-05-04 05:28:02 +01:00
Peter Steinberger
2e2974732f
docs(auth): clarify Google API setup boundaries 2026-05-04 05:22:52 +01:00
Peter Steinberger
6867fe850c
feat(docs): add tab-aware editing fixes
Co-authored-by: Don Bowman <5131923+donbowman@users.noreply.github.com>
Co-authored-by: JoseLuis Vilar <13889217+chopenhauer@users.noreply.github.com>
2026-05-04 05:22:49 +01:00
Peter Steinberger
6af52a406b
fix(version): infer module version for source installs
Co-authored-by: Josh Avant <830519+joshavant@users.noreply.github.com>
2026-05-04 05:22:43 +01:00
Peter Steinberger
7ab00e691b
fix(calendar): accept events list selector forms 2026-05-04 05:22:39 +01:00
Peter Steinberger
0a280923b2
chore: update tracking dependencies 2026-05-04 02:01:40 +01:00
Peter Steinberger
f26af3adba
feat(safety): add baked safety profiles (#536)
* feat(safety): add baked safety profiles

Co-authored-by: Drew Burchfield <1084679+drewburchfield@users.noreply.github.com>

* fix(safety): narrow readonly profile parent allows

* fix(safety): verify basename safe-build outputs

* fix(backup): promote Gmail checkpoints into final manifest

* docs(safety): explain baked safety profiles

* feat(safety): filter profiled help and schema

* fix(safety): avoid help filter shadow warnings

* fix(backup): make plaintext export resilient

* docs(changelog): mention safety help filtering

* fix(backup): satisfy export lint checks

---------

Co-authored-by: Drew Burchfield <1084679+drewburchfield@users.noreply.github.com>
2026-04-29 03:35:18 +01:00
Peter Steinberger
c21a3b5914
docs: start 0.15.0 changelog 2026-04-28 11:18:22 +01:00
Peter Steinberger
469f4b4382
release: v0.14.0
Some checks failed
ci / test (push) Has been cancelled
ci / worker (push) Has been cancelled
ci / windows (push) Has been cancelled
ci / darwin-cgo-build (push) Has been cancelled
2026-04-28 10:38:04 +01:00
Peter Steinberger
20004a3fdb
docs: reorder unreleased changelog 2026-04-28 10:36:49 +01:00
Peter Steinberger
d295443985
chore(deps): update dependencies 2026-04-28 10:35:05 +01:00
Peter Steinberger
e98f44d665
fix(tracking): rotate email tracking keys 2026-04-28 10:22:55 +01:00
Peter Steinberger
7b6b161236
fix(tracking): make worker deploy reusable 2026-04-28 09:51:03 +01:00
Peter Steinberger
9ce77eff13
fix(tracking): expire old open records 2026-04-28 09:32:26 +01:00
Peter Steinberger
dfc5b75f86
fix(tracking): rate-limit pixel recording 2026-04-28 09:19:13 +01:00
Peter Steinberger
0a5d06e98b
fix(auth): tolerate unreadable file keyring tokens 2026-04-28 09:15:19 +01:00
Peter Steinberger
77a16d10ef
feat(gmail): append send-as signatures 2026-04-28 08:40:43 +01:00
Peter Steinberger
ec3ac8daa5
docs(auth): clarify testing refresh token expiry 2026-04-28 08:22:58 +01:00
Peter Steinberger
2892765ea3
ci: pin workflow actions 2026-04-28 08:14:59 +01:00
Peter Steinberger
4d585b1680
fix(auth): guard manual auth token storage 2026-04-28 08:12:43 +01:00
Peter Steinberger
1eaad2556c
feat(backup): add markdown Gmail export 2026-04-28 07:29:27 +01:00
Peter Steinberger
d51e94a8ca
docs(readme): document docs tab export 2026-04-28 06:39:58 +01:00
Peter Steinberger
539de113c1
fix(gmail): reject label slash collisions 2026-04-28 06:38:02 +01:00
Peter Steinberger
1763b3905f
fix(docs): harden tab export landing
Co-authored-by: Ben Lewis <johnbenjaminlewis@gmail.com>
2026-04-28 06:30:38 +01:00
Ben Lewis
26e01cfa97
feat(cli): add --tab flag for per-tab Google Doc export
Add experimental --tab flag to `gog docs export` and `gog drive download`
that exports a single tab from a Google Doc by title or ID. Uses the
undocumented per-tab Docs export endpoint with a custom redirect policy
that rejects non-Google redirects to detect auth failures early.

(cherry picked from commit 5a741be7ce0df13f75a10bc7a70df9fbab9475da)
2026-04-28 06:09:41 +01:00
Peter Steinberger
9362a7664e
docs(readme): clarify gmail trash workflow 2026-04-28 05:40:08 +01:00
Peter Steinberger
4bd3172aa1
test(gmail): cover nested label names 2026-04-28 05:32:25 +01:00
Peter Steinberger
8f6791f9f9
refactor(googleapi): expose authenticated HTTP client
Co-authored-by: Ben Lewis <johnbenjaminlewis@gmail.com>
2026-04-28 05:08:14 +01:00
Peter Steinberger
7ee069d88d
feat(backup): push gmail checkpoints asynchronously 2026-04-28 04:52:13 +01:00
Peter Steinberger
8addfcee8b
fix(auth): backfill account subjects on refresh 2026-04-28 04:19:39 +01:00
Peter Steinberger
532601a0f1
fix(auth): preserve accounts across Google email renames 2026-04-28 04:01:06 +01:00
Peter Steinberger
d6111be738
fix(backup): split gmail checkpoints by plaintext size 2026-04-28 04:01:00 +01:00
Peter Steinberger
7b9197ebd1
feat(auth): add auth doctor diagnostics 2026-04-28 02:49:38 +01:00
Peter Steinberger
b58964cc89
fix(backup): shrink gmail checkpoint shards 2026-04-28 02:29:31 +01:00
Peter Steinberger
8e4f5acebb
fix(drive): support stdout downloads 2026-04-28 02:26:43 +01:00
Peter Steinberger
e30d870b3f
feat(contacts): export vCards
Co-authored-by: Dinakar Sarbada <dinakars777@users.noreply.github.com>
2026-04-28 02:01:07 +01:00
Peter Steinberger
81cedf4e9e
fix(backup): ignore interrupted shard temps 2026-04-28 01:46:50 +01:00
Peter Steinberger
9d7ca4ec5f
feat(backup): checkpoint long gmail fetches 2026-04-28 01:41:58 +01:00
Peter Steinberger
e6b6046bb1
fix(slides): harden text edit commands 2026-04-28 01:18:26 +01:00
Chris Sanchez
d047a0325f
feat(slides): add insert-text and replace-text commands
Thin wrappers around presentations.batchUpdate for surgical text edits on
an existing deck.

- insert-text inserts text into a page element by objectId, with
  --insertion-index, --replace (emits DeleteText+InsertText), and
  stdin support via '-'.
- replace-text runs ReplaceAllText across the deck, with --match-case
  and repeatable --page for slide-scoped replacements.

Both honor the global --dry-run (prints the batchUpdate request body as
JSON without calling the API) and --json (emits the full
BatchUpdatePresentationResponse). Plain output gives a one-line
confirmation with revisionId + replies/replaced count. Style mirrors
existing update-notes and replace-slide commands.
2026-04-28 01:10:16 +01:00
Peter Steinberger
0d93cb2a05
refactor(slides): share speaker notes helpers 2026-04-28 01:09:34 +01:00
Peter Steinberger
65db353926
fix(docs): format markdown append writes
Co-authored-by: Eric Liu <eric@ericxliu.me>
2026-04-27 23:36:18 +01:00
Peter Steinberger
6e0af2c463
test(gmail): cover html body-format search 2026-04-27 22:42:45 +01:00
Alex Hillman
d458ed435c
Delete 4a477a05f.json
Unintended commit

(cherry picked from commit 4e92450b6f12427f138c4c6c5e54a5b26ce1438a)
2026-04-27 22:38:57 +01:00
Alex Hillman
d08771e66d
feat(gmail): add --body-format flag to messages search
Supports "text" (default, existing behavior) and "html" to prefer
the HTML MIME part over plaintext. Useful for newsletter ingestion
where the HTML body contains the rich formatted content.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
(cherry picked from commit cb5499ed7b4d20a863de1aef07c58c94ecd9a9fe)
2026-04-27 22:38:57 +01:00
Peter Steinberger
3236577249
docs(readme): document drive search scopes and docs tabs 2026-04-27 22:37:59 +01:00
Peter Steinberger
617293d213
fix(docs): resolve tab titles before mutations 2026-04-27 22:32:31 +01:00
Sheng
80039c8071
feat(drive): add --drive and --parent flags to drive search
Users had no CLI-native way to scope a Drive search to a specific
shared drive or folder. Workarounds required either raw query syntax
(which only matches direct children) or direct API calls bypassing
gog entirely, defeating the purpose of the CLI.

This adds two new flags to 'drive search':

  --drive <driveId>    Scopes search to a specific shared drive using
                       corpora=drive&driveId=X. This is the Drive API's
                       proper pattern for within-drive recursive search.
                       Mutually exclusive with --no-all-drives.

  --parent <folderId>  Wraps the query with "'<folderId>' in parents"
                       to scope results to direct children of a folder
                       (matching 'drive ls --parent' semantics).
                       Mutually exclusive with --raw-query (users with
                       raw queries can include the clause themselves).

Implementation:
  * driveFilesListCallWithDriveSupport takes a new driveID argument;
    when non-empty it sets Corpora("drive").DriveId(X), overriding
    the generic Corpora("allDrives") path.
  * driveFileListOptions gains a driveID field.
  * DriveSearchCmd validates flag combinations up front.

Behavior change:
  * No-args search behavior unchanged — existing users see no change.
  * The sole caller of driveFilesListCallWithDriveSupport passes the
    new driveID from options, preserving current corpora=allDrives
    behavior by default.

Tests added:
  * TestDriveSearchCmd_WithDrive — verifies corpora=drive+driveId wire
  * TestDriveSearchCmd_WithParent — verifies query clause injection
  * TestDriveSearchCmd_DriveAndParent_Combine — verifies the common
    combo of scoping by shared drive + folder works together
  * TestDriveSearchCmd_DriveAndNoAllDrives_Conflicts
  * TestDriveSearchCmd_ParentAndRawQuery_Conflicts

(cherry picked from commit 581fbc9fc23a1f78d0773c6897ca84bdeb77dabc)
2026-04-27 22:24:18 +01:00
Ben Lewis
50f506dd3a
refactor(cli): deprecate --tab-id in favor of --tab
Rename the --tab-id flag to --tab on all docs editing commands (write,
update, insert, delete, find-replace) to match the convention already
used by cat, structure, sed, and the new export command. The old
--tab-id flag is preserved as a hidden alias that emits a deprecation
warning to stderr.

Also switches the internal helpers (docsTargetEndIndex,
loadDocsTargetDocument) from findTabByID to findTab so that --tab
resolves by title as well as ID. Removes the now-unused findTabByID.

(cherry picked from commit 50e69365539483b8b17f697d1391656b324a67af)
2026-04-27 22:24:18 +01:00
Peter Steinberger
acb05f61a8
fix(docs): harden markdown image insertion 2026-04-27 21:33:04 +01:00
Peter Steinberger
3eb8330159
fix(gmail): use people profile for primary sender name 2026-04-27 20:55:03 +01:00
Vinoth Deivasigamani
e97cad62f6
fix(docs): size markdown images on write 2026-04-27 20:50:06 +01:00
Peter Steinberger
cb817fe65a
fix(backup): fail fast on gmail fetch errors 2026-04-27 20:46:41 +01:00
Peter Steinberger
28d9e9873a
feat(cli): improve google api hints and upload/timezone handling 2026-04-27 20:29:39 +01:00
Peter Steinberger
7f1ef97e15
fix(gmail): constrain system-label searches 2026-04-27 14:59:02 +01:00
Peter Steinberger
c4df6c34ea
fix(calendar): localize listed event times 2026-04-27 13:59:14 +01:00
Peter Steinberger
6bdc215191
test(gmail): satisfy timezone date lint 2026-04-27 13:40:59 +01:00
Peter Steinberger
2c48bd8666
fix(gmail): honor configured timezone for sent mail dates
Co-authored-by: Dinakar Sarbada <dinakars777@users.noreply.github.com>
2026-04-27 13:36:38 +01:00
Peter Steinberger
8409571d60
fix(gmail): preserve renewed watch state 2026-04-27 13:31:27 +01:00
Peter Steinberger
9ab348356a
perf(backup): bound gmail fetch memory 2026-04-27 13:17:13 +01:00
Peter Steinberger
b8f53df696
perf(backup): stream gmail backup shards 2026-04-27 13:13:52 +01:00
Peter Steinberger
ff5e85b159
feat(backup): resume full gmail backups 2026-04-27 13:02:43 +01:00
Peter Steinberger
eb6886633d
fix(backup): bound drive content exports 2026-04-27 12:42:34 +01:00
Peter Steinberger
198407c252
perf(backup): parallelize drive collaboration scan 2026-04-27 12:23:33 +01:00
Peter Steinberger
a4f8bed267
fix(backup): use valid contact group field mask 2026-04-27 12:11:35 +01:00
Peter Steinberger
efc3df2ed8
feat(backup): expand google backup coverage 2026-04-27 12:09:37 +01:00
Peter Steinberger
8e48087457
test(secrets): fix Windows lint spacing 2026-04-27 11:44:29 +01:00
Peter Steinberger
4256d7c6fe
test(gmail): assert draft reply subject inference 2026-04-27 11:36:33 +01:00
Peter Steinberger
c2ea4f55e0
test(secrets): satisfy keyring lint rules 2026-04-27 11:35:08 +01:00
Peter Steinberger
46331eabc3
chore: fix copyright header 2026-04-27 11:27:15 +01:00
Peter Steinberger
05239aed5b
fix(gmail): infer draft reply subject 2026-04-27 11:24:52 +01:00
Peter Steinberger
7429f6fc42
fix(drive): include thumbnail fields in metadata 2026-04-27 11:24:42 +01:00
Peter Steinberger
6430dd1a99
fix(secrets): time out macOS keyring operations
Co-authored-by: Sardor Umarov <sardoru@gmail.com>
2026-04-27 11:22:17 +01:00
Peter Steinberger
8135cc3ff8
fix(secrets): make file keyring keys Windows-safe
Co-authored-by: solomonneas <srneas@gmail.com>
2026-04-27 11:20:48 +01:00
Peter Steinberger
068ff0e593
feat(backup): expand workspace backup coverage 2026-04-27 11:13:40 +01:00
Peter Steinberger
896cccc3dc
refactor(gmail): split reply metadata helpers 2026-04-27 10:31:53 +01:00
Peter Steinberger
9f2fae2913
refactor(docs): centralize tab helpers 2026-04-27 10:31:51 +01:00
Peter Steinberger
b1b427da5f
refactor(drive): centralize file field masks 2026-04-27 10:31:48 +01:00
Peter Steinberger
6f917ee74e
feat(backup): add workspace service adapters 2026-04-27 10:31:44 +01:00
Peter Steinberger
ee9b552dcd
feat(backup): add plaintext read and export commands 2026-04-27 10:15:26 +01:00
Peter Steinberger
922ca38b3b
fix(docs): show available tabs on lookup errors
Co-authored-by: Ben Lewis <johnbenjaminlewis@gmail.com>
2026-04-27 10:12:24 +01:00
Peter Steinberger
63cfefe144
fix(gmail): expose reply threading metadata
Co-authored-by: Solomon Neas <srneas@gmail.com>
2026-04-27 10:12:21 +01:00
Peter Steinberger
3f46ddf14a
fix(drive): include driveId in file field masks
Co-authored-by: Sheng <sheng@tesserac.ai>
2026-04-27 10:12:18 +01:00
Peter Steinberger
533718b8e7
docs(changelog): open 0.14.0 cycle 2026-04-27 09:31:47 +01:00
Peter Steinberger
b5d86989a2
test(backup): commit manifest tamper fixtures 2026-04-27 09:26:21 +01:00
Peter Steinberger
a7c5428a4e
test(backup): keep backup tests local-only 2026-04-27 09:22:53 +01:00
Peter Steinberger
e49e9f45c3
feat(backup): add encrypted Google backups 2026-04-27 09:19:06 +01:00
Peter Steinberger
0337dcc572
docs: add gog skill 2026-04-27 02:11:45 +01:00
Peter Steinberger
5cd913e287
release: v0.13.0
Some checks failed
ci / test (push) Has been cancelled
ci / worker (push) Has been cancelled
ci / windows (push) Has been cancelled
ci / darwin-cgo-build (push) Has been cancelled
2026-04-20 23:09:30 +01:00
Peter Steinberger
5f396e6f49
fix(docs): honor create dry-run 2026-04-20 23:04:20 +01:00
Peter Steinberger
a6e6d82423
build(deps): update dependency pins 2026-04-20 22:55:31 +01:00
Peter Steinberger
d3ac6b7311
docs(changelog): organize unreleased notes 2026-04-20 21:15:41 +01:00
Peter Steinberger
e22ae86289
fix(sheets): preserve chart sheet ID zero
Co-authored-by: Andrea Bergonzo <andybergon@gmail.com>
2026-04-20 20:53:57 +01:00
Peter Steinberger
acb40a8152
feat(sheets): add chart commands
Co-authored-by: Andrea Bergonzo <andybergon@gmail.com>
2026-04-20 20:41:15 +01:00
Peter Steinberger
7850415b87
refactor(cmd): keep landed PR paths lint-clean
Co-authored-by: iskkw9973 <ishikawam.dev@gmail.com>
Co-authored-by: klodr <klodr@users.noreply.github.com>
2026-04-20 19:20:54 +01:00
Peter Steinberger
64ab3772bf
feat(gmail,contacts): land label style and contact gender
Co-authored-by: iskkw9973 <ishikawam.dev@gmail.com>
Co-authored-by: klodr <klodr@users.noreply.github.com>
2026-04-20 19:17:47 +01:00
Peter Steinberger
dbeca138c3
docs: add generated command reference 2026-04-20 19:06:53 +01:00
Peter Steinberger
35d0ff4f47
test(gmail): extend live no-send smokes 2026-04-20 19:06:48 +01:00
Peter Steinberger
0ea676369d
refactor(gmail): centralize compose send plumbing 2026-04-20 19:06:45 +01:00
spencer-c-reed
13a1aaea13
feat(gmail): add forward command
Add `gog gmail forward` / `gog gmail fwd` with optional notes, verified send-as selection, forwarded headers, thread metadata, and attachment carry-over.

Hardening in this landing pass:
- include forward/fwd in Gmail no-send guard paths
- enforce per-account no-send before any Gmail API fetch/send work
- de-duplicate forwarded header formatting and test service setup
- update README, spec, and changelog

Validation:
- make fmt
- go test ./internal/cmd -run Forward\|NoSend
- make lint && make test && make build
- make ci
- clawdbot live smoke: read-only gmail search/thread get, forward dry-run with real message id, --gmail-no-send forward blocked before send

Co-authored-by: Spencer Reed <spencer.cavendish.reed@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-20 17:28:27 +01:00
Alex Hillman
db3a32432c
feat(calendar): add secondary calendar creation
Adds `gog calendar create-calendar` / `new-calendar` for secondary Google Calendar creation with summary, description, timezone, and location.

Landing polish:
- removed unrelated `.byline` cache files from the PR branch
- validates IANA timezone names locally
- dry-run no longer opens the Calendar service
- includes location in text output
- added request/body, text, dry-run, and validation tests
- README/spec/CHANGELOG entries

Local verification:
- go test ./internal/cmd -run TestCalendarCreateCalendarCmd
- make lint
- make test
- make build
- make ci
- live Calendar smoke with clawdbot@gmail.com: created secondary calendar, verified summary/timezone/location, deleted it via the same auth path

Thanks @alexknowshtml.

Co-authored-by: Alex Hillman <alex@indyhall.org>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 17:14:11 +01:00
Gianfranco P
a1fd0a8333
feat(slides): add rendered slide thumbnails
Adds `gog slides thumbnail` / `thumb` for rendered slide thumbnail URLs and optional PNG/JPEG downloads.

Landing polish:
- supports `--out` with `--output` alias
- uses shared output-file helper for expansion, parent creation, and private perms
- preserves close/write errors
- adds missing presentation-id test plus docs/spec/CHANGELOG

Local verification:
- go test ./internal/cmd -run TestSlidesThumbnail
- make lint
- make test
- make build
- make ci
- live Slides smoke with clawdbot@gmail.com: created deck, listed slide, downloaded medium PNG thumbnail, verified PNG bytes, trashed deck

Thanks @gianpaj.

Co-authored-by: gianpaj <gianpa@gmail.com>
2026-04-20 16:52:53 +01:00
Ben Lewis
5d332f7746
feat(drive): convert Markdown uploads to Docs
Adds Markdown upload conversion to Google Docs via `--convert` / `--convert-to doc`, strips leading YAML frontmatter by default, and provides `--keep-frontmatter` for the opt-out path.

Landing polish:
- byte-based frontmatter stripping with BOM/CRLF coverage
- Drive upload media tests for stripped and preserved frontmatter
- README/spec/CHANGELOG coverage

Local verification:
- focused `go test ./internal/cmd -run ...`
- make lint
- make test
- make build
- make ci
- live Drive smoke with clawdbot@gmail.com: converted Markdown upload, Markdown export verified no frontmatter, opt-out verified preserved content, both files trashed

Thanks @johnbenjaminlewis.

Co-authored-by: Ben Lewis <johnbenjaminlewis@gmail.com>
2026-04-20 16:39:48 +01:00
takashiyamaguchi
c73bb23fec
feat(auth): add credentials remove command
Adds `gog auth credentials remove [<client>|all]` with token/domain cleanup, JSON output, dry-run support, docs, and regression tests.

Local verification:
- make fmt
- make lint
- make test
- make build
- make ci

Thanks @yamagucci.

Co-authored-by: takashiyamaguchi <yama0628taka@gmail.com>
2026-04-20 16:32:03 +01:00
Peter Steinberger
2d0533557c
docs(readme): sync examples with CLI 2026-04-20 16:15:51 +01:00
Peter Steinberger
d84148a424
feat(gmail): add command and send safety guards
Co-authored-by: EricYangTL <eric@topazlabs.com>
Co-authored-by: spookyuser <16196262+spookyuser@users.noreply.github.com>
Co-authored-by: VeteranBV <henrysowell@gmail.com>
2026-04-20 16:05:19 +01:00
Peter Steinberger
4f5e474059
fix(cli): improve completion and Windows live testing
Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>
Co-authored-by: gagradebnath <salemdebnath@gmail.com>
2026-04-20 16:05:12 +01:00
Peter Steinberger
a8531f26b8
style(secrets): satisfy lint 2026-04-20 15:31:03 +01:00
Peter Steinberger
67ff204d1d
feat(drive,sheets): polish listings and tab commands
Co-authored-by: laihenyi <henyi@henyi.org>

Co-authored-by: Alex Hillman <alex@indyhall.org>

Co-authored-by: Umar Khan <ufkhan97@gmail.com>

Co-authored-by: Matthias Kurz <m.kurz@irregular.at>
2026-04-20 15:29:14 +01:00
Peter Steinberger
c4665c4bff
feat(auth): add ads service and keyring namespace override
Co-authored-by: Umar Khan <ufkhan97@gmail.com>

Co-authored-by: Matthias Kurz <m.kurz@irregular.at>
2026-04-20 15:29:03 +01:00
Peter Steinberger
3d63ebcc3e
fix(gmail): mark non-ascii html mime as 8bit
Co-authored-by: Daniel Nylander <daniel@danielnylander.se>
2026-04-20 15:28:58 +01:00
Peter Steinberger
ade1214edc
refactor: split command test helpers
Co-authored-by: twilsher <273817+twilsher@users.noreply.github.com>
Co-authored-by: Alex <1514933+alexuser@users.noreply.github.com>
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: pavelzak <2132599+pavelzak@users.noreply.github.com>
2026-04-20 15:11:55 +01:00
Peter Steinberger
e13b2c102d
refactor: clarify recently landed PR helpers
Co-authored-by: twilsher <273817+twilsher@users.noreply.github.com>
Co-authored-by: Alex <1514933+alexuser@users.noreply.github.com>
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: pavelzak <2132599+pavelzak@users.noreply.github.com>
2026-04-20 14:55:46 +01:00
Peter Steinberger
c92d2e6371
feat(drive): support commenter share role (#443)
Co-authored-by: pavelzak <2132599+pavelzak@users.noreply.github.com>
2026-04-20 14:33:47 +01:00
Peter Steinberger
fe06c3cfb7
feat(gmail): add full message search bodies (#447)
Co-authored-by: Dewaldt Huysamen <5792287+GodsBoy@users.noreply.github.com>
2026-04-20 14:33:41 +01:00
Peter Steinberger
f1cef0d2da
feat(chat): support substring space lookup (#506)
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
2026-04-20 14:33:33 +01:00
Peter Steinberger
a3f083c906
fix(tracking): prefer file secrets over stale keyring (#469)
Co-authored-by: Alex <1514933+alexuser@users.noreply.github.com>
2026-04-20 14:33:27 +01:00
Peter Steinberger
b048241696
fix(docs): restore markdown replace writes (#501)
Co-authored-by: twilsher <273817+twilsher@users.noreply.github.com>
2026-04-20 14:33:19 +01:00
Peter Steinberger
9e53b8681e
docs(agents): require co-author trailers for contributor work 2026-04-20 14:25:25 +01:00
Peter Steinberger
89916a5d9f
docs(changelog): thank contributors for landed fixes 2026-04-20 14:17:08 +01:00
Peter Steinberger
570294cdbd
fix(tasks): clear due date with empty flag 2026-04-20 14:16:57 +01:00
Peter Steinberger
0aa06b4706
fix(gmail): avoid stale charset re-decode 2026-04-20 14:16:54 +01:00
Peter Steinberger
df3e97faed
fix(calendar): correct event timezone and day bounds 2026-04-20 14:16:50 +01:00
Peter Steinberger
b371214104
style(time): satisfy weekday test lint 2026-04-20 14:03:01 +01:00
Peter Steinberger
4e6f485092
refactor(time): share weekday parsing 2026-04-20 14:01:37 +01:00
Peter Steinberger
b0a19c545f
fix(docs): preserve sed backreference formatting 2026-04-20 13:57:47 +01:00
Peter Steinberger
8482fbb1c0
fix(docs): use utf16 offsets for sed matches 2026-04-20 13:51:24 +01:00
Peter Steinberger
e427012c16
fix(time): parse common weekday aliases 2026-04-20 13:46:25 +01:00
Peter Steinberger
42476087f7
fix(cmd): reuse default literal constant 2026-04-20 13:34:05 +01:00
Peter Steinberger
c442d134a0
docs(changelog): thank PR 440 contributor 2026-04-20 13:32:41 +01:00
7. Sun
e781023fb4
fix(cmd): accept common weekday aliases
Parse tues, thur, and thurs as weekday expressions.\n\nThanks @sjhddh.
2026-04-20 13:32:28 +01:00
Peter Steinberger
8f88ec1414
docs(changelog): thank PR 467 contributor 2026-04-20 13:32:22 +01:00
Matt Van Horn
52c4a30fcd
fix(auth): clean config on account removal
Remove account aliases and client mappings when auth remove deletes a stored token.\n\nThanks @mvanhorn.
2026-04-20 13:32:02 +01:00
Peter Steinberger
7d5b96c29e
docs(changelog): thank PR 439 contributor 2026-04-20 13:31:53 +01:00
Claude Perrin
9e407bde74
fix(contacts): reject conflicting from-file update flags
Reject all individual contact update flags when --from-file is used.\n\nThanks @klodr.
2026-04-20 13:31:36 +01:00
Peter Steinberger
70076e3cd1
docs(changelog): thank PR 476 contributor 2026-04-20 13:31:26 +01:00
Shashank Kumar
e787894cdf
fix(gmail): preserve plain text body wrapping
Encode plain text MIME parts as quoted-printable so long body lines survive transport without hard wrapping.\n\nThanks @shashankkr9.
2026-04-20 13:30:09 +01:00
Peter Steinberger
c92333d730
docs(changelog): thank PR 483 contributor 2026-04-20 13:29:53 +01:00
Bill
4185e02a54
fix(docs): preserve sed formatting offsets
Use UTF-16 offsets for sed formatting ranges and preserve whole-match & replacements.\n\nThanks @bill492.
2026-04-20 13:29:35 +01:00
Peter Steinberger
5b4ab8d67b
fix(deps): pin patched vite 2026-04-20 13:14:06 +01:00
Peter Steinberger
68e0e2e6ba
chore(deps): update dependencies 2026-04-20 13:06:44 +01:00
Peter Steinberger
4067cc6e57
feat(gmail): add autoreply command 2026-03-13 17:02:21 +00:00
Peter Steinberger
4b06fabb4c fix(gmail): make filter creation idempotent 2026-03-11 20:47:58 +00:00
Peter Steinberger
8677685777 ci: bootstrap worker pnpm via corepack 2026-03-09 06:26:31 +00:00
Peter Steinberger
fab1552ace ci: use github-hosted ubuntu runners 2026-03-09 06:25:34 +00:00
Peter Steinberger
a96ad42e02 test(ci): fix windows tracking and capture flakes 2026-03-09 06:12:01 +00:00
Peter Steinberger
c18c58c8da release: v0.12.0
Some checks failed
ci / test (push) Has been cancelled
ci / worker (push) Has been cancelled
ci / windows (push) Has been cancelled
ci / darwin-cgo-build (push) Has been cancelled
2026-03-09 05:52:34 +00:00
Peter Steinberger
94d1806a8b docs(readme): refresh feature overview for 0.12 2026-03-09 05:42:47 +00:00
Peter Steinberger
8632068424 docs(changelog): prioritize 0.12 release notes 2026-03-09 05:40:30 +00:00
Peter Steinberger
61641c1558 test(cmd): simplify watch sandbox helper 2026-03-09 05:27:43 +00:00
Peter Steinberger
4a0901b92e test(cmd): harden config sandboxing in watch suites 2026-03-09 05:26:34 +00:00
Peter Steinberger
e968c2f65f fix(calendar): harden enterprise live paths 2026-03-09 05:16:01 +00:00
Peter Steinberger
c1e22e5627 fix(config): honor XDG config dir on windows 2026-03-09 05:02:35 +00:00
Peter Steinberger
ae3688b51e style(classroom): fix shadow warnings 2026-03-09 03:53:53 +00:00
Peter Steinberger
a47b98c12e refactor(cmd): reuse shared service loaders 2026-03-09 03:52:14 +00:00
Peter Steinberger
7b669f85ae refactor(classroom): share list and service helpers 2026-03-09 03:50:11 +00:00
Peter Steinberger
d4ffe4c0e0 refactor(gmail): share settings CRUD helpers 2026-03-09 03:47:58 +00:00
Peter Steinberger
263a4af5e2 style(cmd): document output dir waiver 2026-03-09 03:44:03 +00:00
Peter Steinberger
041f034555 test(drive): cover auto-created download dirs 2026-03-09 03:42:50 +00:00
Peter Steinberger
542b07dcd9 style(cmd): fix shadow warnings 2026-03-09 03:41:28 +00:00
Peter Steinberger
567965c3d9 refactor(cmd): share output file creation 2026-03-09 03:39:23 +00:00
Peter Steinberger
f1d355bfa7 refactor(calendar): share recurring scope resolution 2026-03-09 03:37:11 +00:00
Peter Steinberger
e505cedcc5 refactor(gmail): share filter helpers 2026-03-09 03:35:51 +00:00
Peter Steinberger
074c4a5042 refactor(sheets): extract dimension span parsing 2026-03-09 03:33:30 +00:00
Peter Steinberger
a394c1c7b0 refactor(sheets): share mutation runner and sheet catalog 2026-03-09 03:31:53 +00:00
Peter Steinberger
fbb230b60b feat(gmail): add filters export command (#119) (thanks @Jeswang) 2026-03-09 03:26:52 +00:00
Peter Steinberger
004b68cc70 feat(sheets): add merge, freeze, resize, and number-format commands (#320) (thanks @Shehryar) 2026-03-09 03:24:11 +00:00
Peter Steinberger
1c789e5143 style(auth): suppress mkdir taint false-positive 2026-03-09 03:24:11 +00:00
Peter Steinberger
e19bac1f1d feat(calendar): improve selection and recurring scope handling (#319) (thanks @salmonumbrella) 2026-03-09 03:16:58 +00:00
Peter Steinberger
4fb1cf823e style(auth): normalize auth token export nosec marker 2026-03-09 03:16:58 +00:00
Peter Steinberger
521b4d45a5 feat(sheets): add find-replace and fix note clearing (#341) (thanks @Shehryar) 2026-03-09 03:07:30 +00:00
Peter Steinberger
af0a597e21 style(auth): move gosec waiver inline 2026-03-09 03:07:30 +00:00
Peter Steinberger
77f0798461 fix(auth): add proxy-friendly OAuth callback flags (#227) (thanks @cyberfox) 2026-03-09 02:58:53 +00:00
Peter Steinberger
6c607710bb style(auth): drop stale nolint annotations 2026-03-09 00:48:06 +00:00
Peter Steinberger
10009cb059 style(refactor): satisfy gate after helper extractions 2026-03-09 00:47:36 +00:00
Peter Steinberger
2fcd86d1d7 test(cmd): share command UI test contexts 2026-03-09 00:45:34 +00:00
Peter Steinberger
aaafcca8e2 refactor(calendar): share mutation execution helpers 2026-03-09 00:44:21 +00:00
Peter Steinberger
b68d9e9968 refactor(gmail): share compose planning helpers 2026-03-09 00:42:24 +00:00
Peter Steinberger
c38a701c3b refactor(comments): share drive-backed comment ops 2026-03-09 00:40:28 +00:00
Peter Steinberger
6103f9d035 refactor(cmd): share service bootstrap and paging helpers 2026-03-09 00:37:34 +00:00
Peter Steinberger
59b9214f29 style(drive): drop stale upload nolint 2026-03-08 23:43:36 +00:00
Peter Steinberger
1710b549bc refactor(drive): split listing and upload flows 2026-03-08 23:42:52 +00:00
Peter Steinberger
af9f9f0ec5 test(calendar): share calendar test harness 2026-03-08 23:41:01 +00:00
Peter Steinberger
16876c95e0 style(refactor): satisfy gate after helper extractions 2026-03-08 23:34:26 +00:00
Peter Steinberger
c858909e85 refactor(core): drop old selector matcher shim 2026-03-08 23:33:19 +00:00
Peter Steinberger
2a43e5d91e test(refactor): share docs API test harness 2026-03-08 23:33:06 +00:00
Peter Steinberger
ae7d9ed23b refactor(core): move selector matching out of cmd 2026-03-08 23:30:28 +00:00
Peter Steinberger
cc2e705220 refactor(selectors): share exact-match resolution helpers 2026-03-08 23:29:27 +00:00
Peter Steinberger
644951e87b refactor(calendar): extract event planning helpers 2026-03-08 23:28:32 +00:00
Peter Steinberger
325fae5646 refactor(docs): extract shared mutation engine 2026-03-08 23:27:15 +00:00
Peter Steinberger
c38fbb3592 feat(docs): extend find-replace with markdown, images, and first-occurrence support (#305)
Co-authored-by: Chris Parsons <chris.p@rsons.org>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 21:36:34 +00:00
Peter Steinberger
2aa193e0a5 feat(chat): add react shorthand command for reactions create (#435)
- add 'chat messages react <message> <emoji>' as a direct shorthand for reaction creation
- keep 'reaction' as the alias for the 'reactions' command group
- add regression coverage for the shorthand path

Co-authored-by: Fernando Pina dos Santos <fernando.dossantos@trilogy.com>
2026-03-08 21:24:03 +00:00
Peter Steinberger
2fe9d9524e feat(tasks): add recur aliases and RRULE support for task repeats (#408)
- add --recur and --recur-rrule aliases for repeat materialization
- support RRULE FREQ with optional INTERVAL when generating concrete task occurrences
- document the materialized repeat behavior in README and changelog

Co-authored-by: salmonumbrella <182032677+salmonumbrella@users.noreply.github.com>
2026-03-08 21:22:02 +00:00
Peter Steinberger
e323f691e8 feat(keep): add create and delete commands (#413)
- add keep create/delete commands for text and checklist notes
- validate checklist items and switch Keep service-account scope to writable access
- refresh README and changelog for Keep write support

Co-authored-by: John Westerlund <john.westerlund@cygnisec.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-08 21:19:48 +00:00
Peter Steinberger
a3b5bc851e style(config): satisfy alias cleanup spacing lint 2026-03-08 19:43:49 +00:00
Peter Steinberger
47540f979e style(config): satisfy alias cleanup spacing lint 2026-03-08 19:42:15 +00:00
Peter Steinberger
61da6eee5c fix(config): satisfy alias cleanup lint 2026-03-08 19:41:31 +00:00
Peter Steinberger
6047619e2a test(calendar): cover alias resolution paths 2026-03-08 19:40:10 +00:00
Peter Steinberger
566c999307 refactor(calendar): normalize alias output keys 2026-03-08 19:40:07 +00:00
Peter Steinberger
146ae97372 refactor(config): share alias map storage 2026-03-08 19:36:06 +00:00
Peter Steinberger
7a95eb26b0 fix(config): validate and serialize calendar alias writes 2026-03-08 19:35:09 +00:00
Peter Steinberger
cd40aa4d6b refactor(calendar): make default-primary command-owned 2026-03-08 19:34:19 +00:00
Peter Steinberger
a6577e8728 refactor(calendar): unify selector resolution 2026-03-08 19:33:47 +00:00
salmonumbrella
905c0e4aa0
feat(calendar): add calendar aliases (supersedes #104) (#393)
* feat(config): add CalendarAliases field to config

Add support for storing calendar aliases in config.json, following the
same pattern as account aliases. Includes CRUD functions and tests.

* feat(calendar): add calendar alias CLI commands

Add gog calendar alias {list,set,unset} commands for managing calendar
aliases. These allow mapping friendly names like 'family' to full
calendar IDs like '3656f8abc123@group.calendar.google.com'.

* feat(calendar): add alias resolution helper

Add resolveCalendarID helper function and register CalendarAliasCmd
in the calendar command tree.

* feat(calendar): resolve aliases in create/update/delete commands

Update CalendarCreateCmd, CalendarUpdateCmd, CalendarDeleteCmd,
CalendarProposeTimeCmd, and CalendarRespondCmd to resolve calendar
aliases before using the calendar ID.

* feat(calendar): resolve aliases in specialized event commands

Update focus-time, out-of-office, working-location, and time commands
to resolve calendar aliases.

* feat(calendar): resolve aliases in search and multi-calendar commands

Update search, freebusy, and conflicts commands to resolve calendar
aliases. Multi-calendar commands now resolve each calendar ID in the
comma-separated list.

* fix(calendar): clear CI lint issues in alias PR

* feat(calendar): add calendar aliases (#393)

* fix(calendar): satisfy alias lint on landed branch (#393)

---------

Co-authored-by: Zachary <zachary@tamas.sh>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-08 17:34:11 +00:00
nilzzzzzz
79546b9a60
feat(sheets): add read-format command and borders guardrails (#284)
* feat(sheets): add read-format and harden borders formatting

* style(sheets): satisfy format check on landed branch (#284)

* refactor(sheets): satisfy read-format lint on landed branch (#284)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-08 17:23:24 +00:00
tengis
45c272ffe8
feat(auth): add Application Default Credentials (ADC) auth mode (#357)
* feat: add Application Default Credentials (ADC) auth mode

When GOG_AUTH_MODE=adc, the CLI authenticates using ambient credentials
(GKE Workload Identity, GOOGLE_APPLICATION_CREDENTIALS, or gcloud ADC)
instead of the keyring-based OAuth flow. This enables use in environments
like GKE pods where the service account accesses resources explicitly
shared with it — no domain-wide delegation or user impersonation needed.

The account email is no longer required in ADC mode; requireAccount()
returns "adc" as a placeholder when no --account/GOG_ACCOUNT is set.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(auth): add ADC mode (#357) (thanks @tengis617)

* fix(auth): satisfy ADC lint on landed branch (#357)

* test(auth): fix ADC test whitespace lint (#357)

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-08 17:18:18 +00:00
Peter Steinberger
f40b34837e refactor(slides): extract template replacement builders 2026-03-08 05:25:18 +00:00
Peter Steinberger
4a840b517f refactor(cmd): split calendar and gmail entry files 2026-03-08 05:17:56 +00:00
Peter Steinberger
49729c16c4 refactor(cmd): share destructive mutation guardrails 2026-03-08 05:07:52 +00:00
Peter Steinberger
2d38040e24 fix(forms): address lint nits in tests (#274) (thanks @alexknowshtml) 2026-03-08 04:49:07 +00:00
Peter Steinberger
5c3eaa4594 fix(forms): harden question management and watches (#274) (thanks @alexknowshtml) 2026-03-08 04:49:07 +00:00
Alex Hillman
1de23055b8 Add forms question management and watch commands
New commands: add-question, delete-question, move-question, update, and
watch create/list/delete/renew. Covers the full Google Forms API surface
for form modification via batchUpdate and response watches.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 04:49:07 +00:00
Peter Steinberger
4a69ebbfa5 fix(slides): clean template replacement parsing (#273) (thanks @penguinco) 2026-03-08 04:43:36 +00:00
Peter Steinberger
12e50379a5 fix(slides): harden template replacements (#273) (thanks @penguinco) 2026-03-08 04:43:36 +00:00
penguinco
922c1fbb8b feat(slides): add create-from-template command with text replacement
Adds `gog slides create-from-template` command to create presentations
from templates with automatic placeholder text replacement.

Features:
- {{key}} placeholder format (auto-wrapped)
- Multiple replacement sources: --replace flags and --replacements JSON file
- Type conversion for JSON (numbers, booleans → strings)
- --exact flag for arbitrary string replacement
- Replacement statistics in output
- JSON/text output modes

Implementation:
- Copy template via Drive API
- Batch text replacement via Slides API ReplaceAllText
- Comprehensive error handling and validation
- 7 test cases covering all features and edge cases

Usage: gog slides create-from-template <templateId> <title> \
    --replace "key=value" \
    --replacements data.json
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-03-08 04:43:36 +00:00
Peter Steinberger
ffd8cd482b feat(docs): add html export format (#141) (thanks @in-liberty420) 2026-03-08 04:36:21 +00:00
Peter Steinberger
647f3f6441 fix(sheets): harden tab delete flow (#309) (thanks @JulienMalige) 2026-03-08 04:32:36 +00:00
Julien Malige
d203ae3658 feat(sheets): add tab management commands (add-tab, rename-tab, delete-tab)
Add three new subcommands for managing tabs/sheets within a spreadsheet:

- `gog sheets add-tab <spreadsheetId> <tabName>` — creates a new tab
- `gog sheets rename-tab <spreadsheetId> <oldName> <newName>` — renames a tab
- `gog sheets delete-tab <spreadsheetId> <tabName>` — deletes a tab (requires --force or confirmation)

Uses the Sheets API batchUpdate with AddSheet, UpdateSheetProperties, and
DeleteSheet requests, following the same patterns as the existing insert
and format commands.

Includes unit tests with httptest mock server covering all three commands
plus error cases for unknown tab names.
2026-03-08 04:32:36 +00:00
Filip Prochazka
15e58b015d feat(docs): add markdown (md) export format via Google Drive API
Google added native text/markdown export support for Google Docs in
July 2024. This wires up the existing Drive export pipeline to support
--format md, leveraging Google's server-side conversion.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-08 04:24:23 +00:00
Andy
f1645917a7 feat(contacts): add address field support (fixes #331)
- Add --address flag to 'contacts create' and 'contacts update'
  (repeatable, like --url; empty value clears all addresses on update)
- Display addresses in 'contacts get' text output
- Add 'addresses' to contactsUpdateReadMask so existing addresses are
  fetched before patching
- Add contactsAddresses() helper and formatAddress()/allAddresses()
  display helpers
- Also fix pre-existing compile error: contactsApplyPersonName and
  contactsApplyPersonOrganization had incorrect Go parameter-grouping
  syntax (given,familySet bool / org,titleSet bool) which made the
  string params typed as bool — corrected to explicit string types
2026-03-08 04:17:51 +00:00
Peter Steinberger
2be1130c2b refactor(cmd): trim docs service helper scope 2026-03-08 03:56:33 +00:00
Peter Steinberger
a6394ef31f refactor(cmd): add focused account service helpers 2026-03-08 03:55:05 +00:00
Peter Steinberger
ed4e428aa6 refactor(auth): split credentials tokens and account flows 2026-03-08 03:53:24 +00:00
Peter Steinberger
2ae3d64783 refactor(docs): split sed tests into focused files 2026-03-08 03:47:27 +00:00
Peter Steinberger
96529accf5 refactor(docs): split read/edit/helpers into focused files 2026-03-08 03:39:00 +00:00
Peter Steinberger
108b3e6b99 docs(changelog): reorder unreleased entries by user impact 2026-03-08 03:32:39 +00:00
Peter Steinberger
76c45ef316 fix(completion): include current token in fish completion (#123) (thanks @GiGurra) 2026-03-08 03:28:59 +00:00
Peter Steinberger
5c209212b9 feat(docs): add tab-targeted editing flags (#330) (thanks @ignacioreyna) 2026-03-08 03:22:54 +00:00
Peter Steinberger
2bd8c347d0 fix(auth): preserve extra scopes replay and satisfy lint on current main (#421) (thanks @peteradams2026)
Some checks failed
ci / test (push) Has been cancelled
ci / worker (push) Has been cancelled
ci / windows (push) Has been cancelled
ci / darwin-cgo-build (push) Has been cancelled
2026-03-08 03:17:52 +00:00
Zainan Victor Zhou
b10c81a989 feat(auth): add --extra-scopes flag for fine-grained custom OAuth scope selection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 03:14:44 +00:00
Peter Steinberger
97540c9f0d docs(changelog): credit watch token redaction landing (#136) (thanks @paveg) 2026-03-08 03:12:03 +00:00
Ryota Ikezawa
b49d9d4b92
fix(security): redact webhook bearer token in watch status output (#136)
The hook_token was printed in plaintext via `gmail watch status`, which
could leak the bearer token through terminal scrollback, CI logs, or
screen sharing.  Token is now masked by default (first 4 chars + length)
in both text and JSON output.  A new `--show-secrets` flag on the status
subcommand reveals the full value when explicitly requested.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-08 03:11:32 +00:00
Peter Steinberger
7cc6acaeb7 fix(admin): harden directory command support (#403) (thanks @dl-alexandre) 2026-03-08 02:29:47 +00:00
Dalton Alexandre
1216e6282f feat(admin): add user and group management via Admin Directory API
Implements Google Admin SDK Directory API support for Workspace user and

group management with domain-wide delegation.

New commands:

- gog admin users list --domain example.com

- gog admin users get user@example.com

- gog admin users create user@example.com --given John --family Doe

- gog admin users suspend user@example.com

- gog admin groups list --domain example.com

- gog admin groups members list group@example.com

- gog admin groups members add group@example.com user@example.com --role MEMBER

- gog admin groups members remove group@example.com user@example.com

Closes #340

Note: This is a focused implementation of core user/group management.

For full GAM feature parity (PR #179), additional work would be needed

for: alerts, licenses, org units, printers, reports, vault, SSO, etc.
2026-03-08 02:29:47 +00:00
Fernando Pina dos Santos
ebdb23bf8e feat(chat): add messages reactions create/list/delete commands 2026-03-08 02:23:54 +00:00
Fernando Pina dos Santos
380d88c1a2 feat(chat): add messages reactions create/list/delete commands 2026-03-08 02:23:54 +00:00
Peter Steinberger
3c696c987d fix(sheets): harden named range support (#278) (thanks @TheCrazyLex) 2026-03-08 02:21:07 +00:00
Alex Naidis
1da21969a8 feat(sheets): add named ranges support
Adds a new `sheets named-ranges` command group to list/get/add/update/delete
named ranges via Sheets batchUpdate.

Extends range handling so `sheets format` and data-validation copy can target
named ranges, improves A1 parsing for GridRange-backed operations, and includes
reviewed safety/regression updates for range resolution and SheetId force-send.
2026-03-08 02:21:07 +00:00
Peter Steinberger
f94860c969 feat(docs): add pageless mode support (#300) (thanks @shohei-majima) 2026-03-08 02:16:10 +00:00
Peter Steinberger
efeef87498 test(contacts): satisfy relation parser lint checks (#351) (thanks @karbassi) 2026-03-08 01:31:46 +00:00
Peter Steinberger
e01388ad5f fix(contacts): satisfy relation lint checks (#351) (thanks @karbassi) 2026-03-08 01:31:46 +00:00
Peter Steinberger
b4ad4c76e4 feat(contacts): document relation field support (#351) (thanks @karbassi) 2026-03-08 01:31:46 +00:00
Ali Karbassi
05efcc18c9 feat(contacts): add --relation flag to create and update commands
Add CLI support for the People API relations field (spouse, child,
friend, etc.) via --relation type=person. Extract shared parseKeyValuePairs
helper to reduce duplication with --custom parsing.

Also fix pre-existing compile error in contactsApplyPersonName and
contactsApplyPersonOrganization parameter signatures.
2026-03-08 01:31:46 +00:00
Peter Steinberger
59898358f6 fix(gmail): satisfy label rename vet check (#391) (thanks @adam-zethraeus) 2026-03-08 01:17:29 +00:00
Peter Steinberger
b935d76592 feat(gmail): harden label rename resolution (#391) (thanks @adam-zethraeus) 2026-03-08 01:17:29 +00:00
adamz
a462f1da4b Gmail label renaming functionality 2026-03-08 01:17:29 +00:00
Peter Steinberger
d448264a27 feat(gmail): add single-message modify command (#281) (thanks @zerone0x) 2026-03-08 01:07:53 +00:00
zerone0x
643a255679 feat(gmail): add messages modify command for single-message label changes
Adds `gog gmail messages modify <messageId> --add <labels> --remove <labels>`
so users can add/remove labels on individual messages, not just threads.

Previously only `gmail thread modify` (all messages in a thread) and
`gmail batch modify` (multiple message IDs) were available. This fills the
gap for single-message label operations like trash, archive, or custom
label assignment.

Fixes #277

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-08 01:07:53 +00:00
Peter Steinberger
f22763c999 test(sheets): tighten update-note request coverage (#430) (thanks @andybergon) 2026-03-08 01:05:21 +00:00
Peter Steinberger
10a3511158 feat(sheets): update notes with repeatCell (#430) (thanks @andybergon) 2026-03-08 01:05:21 +00:00
Andrea Bergonzo
c4ea272db5 feat(sheets): add update-note command to write cell notes
The existing `notes` command reads cell notes but cannot write them.
Add `update-note` (alias: `set-note`) to set or clear notes via
batchUpdate with updateCells + fields: "note".

Supports --note for inline text, --note-file for file content,
single cells and ranges. Naming follows slides update-notes pattern.

Closes #429

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 01:05:21 +00:00
Peter Steinberger
70c751c400 test(auth): satisfy oauth redirect lint rules (#398) (thanks @salmonumbrella) 2026-03-08 00:59:23 +00:00
Peter Steinberger
efffd2dcd7 feat(auth): support redirect-uri in manual flows (#398) (thanks @salmonumbrella) 2026-03-08 00:59:23 +00:00
salmonumbrella
5ea6d607fb feat(auth): add --redirect-uri to remote/manual oauth flow 2026-03-08 00:59:23 +00:00
Peter Steinberger
52e34ac4a7 test(auth): remove rebase marker (#399) (thanks @carrotRakko) 2026-03-08 00:55:48 +00:00
Mitsuyuki Osabe
5919a7ed1e feat(auth): support pure service account mode without impersonation
Skip setting cfg.Subject when the subject matches the service account's
own client_email.  This lets a service account access only resources
explicitly shared with it, without requiring Domain-Wide Delegation.

Closes steipete/gogcli#346

✍️ Author: Claude Code with @carrotRakko (AI-written, human-approved)
2026-03-08 00:55:48 +00:00
Peter Steinberger
b8df361598 fix(calendar): preserve zero-minute popup reminders (#316) (thanks @salmonumbrella) 2026-03-08 00:38:37 +00:00
salmonumbrella
32991d4216 fix(calendar): force-send zero-minute reminder overrides 2026-03-08 00:38:37 +00:00
Peter Steinberger
2652d2a65c refactor(auth): simplify account and token-source resolution 2026-03-07 23:48:50 +00:00
Peter Steinberger
11efb052e5 feat(auth): add direct access-token mode (#419) (thanks @mmkal) 2026-03-07 23:39:43 +00:00
DBH
12a237deba
Fix: Clarify RFC3339 timezone requirement for calendar events (#409)
* Clarify RFC3339 timezone requirement for calendar events

* docs(calendar): clarify timestamp timezone requirement (#409) (thanks @dbhurley)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-07 23:34:16 +00:00
Zeldris
ccfb573051
docs: brew official formula (#361)
* docs: brew official formula

* docs(install): note official Homebrew formula (#361) (thanks @zeldrisho)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-07 23:32:53 +00:00
salmonumbrella
5576cd2d38
test(gmail): add regression coverage for CC in plain gmail get output (#343)
* test(gmail): add regression coverage for cc output in gmail get metadata

* fix(gmail): preserve cc metadata output in plain get (#343) (thanks @salmonumbrella)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-07 23:31:07 +00:00
Christoph Stenglein
9471d81127
feat(root): show help if no args were provided (#342)
* feat(root): show help if no args were provided

* fix(root): show help when no args are provided (#342) (thanks @cstenglein)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-07 23:28:32 +00:00
salmonumbrella
c04963b1ee
fix(security): guard risky filter/delegate/public-share actions (#317)
* fix(security): require confirmation for risky share/delegate/filter actions

* fix(lint): resolve contacts lints and format execute tests

* fix(security): guard risky share and delegate flows (#317) (thanks @salmonumbrella)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-07 23:25:54 +00:00
Mahsum Aktaş
b6c5c79d42
fix(sheets): respect --plain flag for TSV output in metadata command (#298)
* fix(sheets): use tableWriter helper in metadata to respect --plain TSV output

The `sheets metadata` command was using `tabwriter.NewWriter` directly
instead of the `tableWriter` helper, which converts tab characters to
spaces for visual alignment. This broke `--plain` mode, which documents
stable TSV output for piping to external tools.

Changes:
- Replace direct `tabwriter.NewWriter` in `SheetsMetadataCmd` with
  `tableWriter(ctx)` helper (which already respects `IsPlain`)
- Remove unused `text/tabwriter` import from sheets.go
- Fix type mismatch in `contactsApplyPersonName` and
  `contactsApplyPersonOrganization` function signatures (#285)
- Add tests for plain TSV output in both `sheets get` and
  `sheets metadata` commands

Fixes #209
Fixes #285

* fix(sheets): respect plain TSV output in metadata (#298) (thanks @mahsumaktas)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-07 23:23:33 +00:00
Peter Steinberger
ee63b190b2 test(auth,calendar): cover replay flags and timezone fallbacks 2026-03-07 23:02:32 +00:00
Peter Steinberger
cc3daa8e52 refactor(timezone): reuse shared timezone loading helpers 2026-03-07 22:58:59 +00:00
Peter Steinberger
04868d7e1b refactor(timezone): centralize timezone location loading 2026-03-07 22:58:38 +00:00
Peter Steinberger
c2ff0b6bda fix(secrets): tighten token verification tests (#270) (thanks @zerone0x) 2026-03-07 22:58:13 +00:00
zerone0x
19113b2a37 fix(secrets): verify token persisted after keyring write
On macOS, the Keychain can silently write 0-byte entries when it is
locked in a headless/server environment, even though Set returns no
error.  The pre-flight check (EnsureKeychainAccess) does not catch
every case because the Keychain can appear unlocked yet still drop
data.

Add a read-back verification after SetToken writes the primary token.
If the read-back fails or returns empty data, return an actionable
error that suggests switching to the file-based keyring backend.

Fixes #206

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-07 22:55:57 +00:00
Peter Steinberger
5d5ce28d47 fix(help): reuse full-help mode constant 2026-03-07 22:53:59 +00:00
Peter Steinberger
52f91e36b8 fix(calendar): harden primary timezone fallback 2026-03-07 22:52:19 +00:00
Peter Steinberger
248623f1df docs(changelog): note recurring timezone fix (#392) (thanks @salmonumbrella) 2026-03-07 22:47:24 +00:00
salmonumbrella
f3a957a1bc fix(lint): avoid err shadow in recurrence timezone enrichment 2026-03-07 22:47:24 +00:00
salmonumbrella
bc6d342e60 fix(calendar): preserve RRULE values and enforce recurring timezone 2026-03-07 22:47:24 +00:00
doodaaatimmy-creator
e50dba7a4a docs(changelog): note remote auth replay fix 2026-03-07 22:46:35 +00:00
doodaaatimmy-creator
43724ba380 fix(auth): preserve remote step 2 replay flags 2026-03-07 22:46:35 +00:00
Peter Steinberger
373f267d3c chore(deps): refresh runtime and workflow dependencies 2026-03-07 22:43:47 +00:00
Peter Steinberger
b543668003 test(ci): skip duplicate vet work 2026-03-07 21:10:11 +00:00
salmonumbrella
09bfedfea0
fix(ci): harden release workflow against tag script injection (#299)
* fix(ci): harden workflow_dispatch tag handling in release

* fix(ci): land release workflow hardening note (#299) (thanks @salmonumbrella)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-07 18:00:48 +00:00
salmonumbrella
752dae2cab
fix(groups): include required label filter in transitive group search (#315)
* fix(groups): add required labels filter for list query

* fix(groups): land transitive label filter note (#315) (thanks @salmonumbrella)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-03-07 17:59:16 +00:00
Peter Steinberger
a2f001e3df fix(auth): persist rotated refresh tokens (#373) (thanks @joshp123) 2026-03-07 17:57:37 +00:00
the sun gif man
59ab29458c
fix(auth): persist rotated refresh tokens during API calls (#373)
Why
- gogcli refreshed access tokens from a stored refresh token but never wrote back
  a rotated refresh token returned by Google.
- In multi-process CLI usage this can leave keyring state stale across invocations
  and eventually cause invalid_grant when the old token is retired.

What
- add persistingTokenSource wrapper in internal/googleapi/client.go
- wrap oauth2.Config TokenSource in tokenSourceForAccountScopes
- persist rotated refresh token back into secrets store when it changes
- keep persistence failures non-fatal (warn, return token)
- add unit tests for rotate/no-rotate/persist-failure paths

Tests
- go test ./internal/googleapi
2026-03-07 17:57:23 +00:00
Peter Steinberger
5adb20f5a5 fix(calendar): land SA timezone lookup note (#325) (thanks @markwatson) 2026-03-07 17:53:57 +00:00
Mark Watson
a16a8016b1
fix(calendar): use Calendars.Get for TZ lookup to fix SA 404 (#325) 2026-03-07 17:53:45 +00:00
Peter Steinberger
e8e7f9c87a fix(gmail): land charset fallback note (#428) (thanks @WinnCook) 2026-03-07 17:52:11 +00:00
Winn Cook
f68f022cb8
fix(gmail): decode mime-type charset fallback (#428)
Co-authored-by: doodaaatimmy-creator <doodaaatimmy@gmail.com>
2026-03-07 17:51:57 +00:00
Peter Steinberger
5ca86b1526 test(calendar): harden subscribe coverage 2026-03-07 16:59:58 +00:00
Peter Steinberger
b15ccd4166 feat(calendar): add subscribe command (#327) (thanks @cdthompson) 2026-03-07 16:55:08 +00:00
Christopher D Thompson
d8650ad908
feat(calendar): add subscribe command for calendarList.insert API (#327)
Add new `calendar subscribe` command to add an existing calendar to the
user's calendar list. Supports optional flags for color, hidden state,
and selection state.

Aliases: sub, add-calendar

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-07 16:54:57 +00:00
Peter Steinberger
abed3d8ad9 fix(calendar): hide cancelled events in list output (#362) (thanks @sharukh010) 2026-03-07 16:52:53 +00:00
Pathan Sharukh Khan
d2acfa48ac
Fix/filter cancelled events (#362)
* fix: filter cancelled events from calendar list by default

* fix(contacts): fix bool/string type mismatch in apply helpers.
2026-03-07 16:52:43 +00:00
Peter Steinberger
845cb7f9b7 fix(contacts): send required other-contact copy mask (#384) (thanks @rbansal42) 2026-03-07 16:50:08 +00:00
Rahul Bansal
1dffd30af8
fix: populate CopyMask in contacts other delete to fix 400 error (#384)
The deleteOtherContact function called CopyOtherContactToMyContactsGroup
with an empty CopyOtherContactToMyContactsGroupRequest{}, but the Google
People API requires the CopyMask field to specify which fields to copy.
Omitting it causes a 400 badRequest error: 'copyMask is required'.

Fix by setting CopyMask to include all relevant contact fields.

Fixes #383

Co-authored-by: Rahul Bansal <rahul@hudle.in>
2026-03-07 16:49:59 +00:00
Peter Steinberger
484faeae30 fix(auth): isolate Keep service account fallback (#414) (thanks @jgwesterlund) 2026-03-07 16:48:19 +00:00
John Westerlund
fae24e3b1d
fix(auth): restrict Keep service account to Keep API calls only (#414)
When a Keep-specific service account file (keep-sa-*.json) exists,
tokenSourceForServiceAccountScopes falls back to it for all API calls,
not just Keep. This causes 401 errors on Calendar, Gmail, Drive, and
other services that should use OAuth.

Only use keep-sa and legacy Keep SA files when serviceLabel is "keep",
allowing other services to fall through to OAuth authentication.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 16:47:39 +00:00
Peter Steinberger
8036c597a1 fix(googleapi): scope timeout landing cleanup (#425) (thanks @laihenyi) 2026-03-07 16:44:51 +00:00
laihenyi
449beff88b
fix(googleapi): replace Client.Timeout with transport-level ResponseHeaderTimeout (#425)
* feat(drive): include shortcutDetails in drive get fields

Add shortcutDetails to the Drive Get API fields to enable resolving
shortcut target file IDs and MIME types.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(googleapi): replace Client.Timeout with transport-level ResponseHeaderTimeout

The global http.Client.Timeout (30s) applied to the entire request
lifecycle, causing large Drive file downloads (videos, backups, etc.)
to time out. Replace it with http.Transport.ResponseHeaderTimeout
which only limits the time waiting for the server to begin responding.
Once response headers arrive and the body starts streaming, there is
no hard cap — large transfers complete naturally.

- Set ResponseHeaderTimeout=30s on the base transport
- Remove http.Client.Timeout from the API client
- Keep a dedicated tokenExchangeTimeout=30s for OAuth2 token refreshes
- Add tests verifying the new transport configuration

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 16:44:37 +00:00
1049 changed files with 88652 additions and 13968 deletions

125
.agents/skills/gog/SKILL.md Normal file
View File

@ -0,0 +1,125 @@
---
name: gog
description: Use when working with the gog CLI for Google Workspace automation, especially when an agent needs JSON output, auth preflight, command guards, scoped accounts, or safe Google API reads/writes across Gmail, Calendar, Drive, Docs, Sheets, Slides, Forms, Apps Script, Contacts, Tasks, People, Groups, Keep, or Admin.
---
# gog
Use `gog` when built-in Google connectors are missing a feature, when shell
automation needs stable JSON, or when you need to inspect local Google auth
state before acting.
## Fast Path
```bash
gog --version
gog auth list --check --json --no-input
gog auth doctor --check --json --no-input
gog schema --json
```
Pick the account explicitly for API work:
```bash
gog --account user@example.com gmail search 'newer_than:7d' --json
```
Prefer `--json` or `--plain` for agent parsing. Human hints and progress should
stay on stderr; stdout is for data.
## Safety Rules
- Do not print access tokens, refresh tokens, OAuth client secrets, or keyring
passwords.
- Do not store `GOG_KEYRING_PASSWORD` in a shell profile or plaintext project
file. If the file keyring cannot unlock non-interactively, stop and ask for a
safer setup.
- Use `--no-input` in automation so auth/keyring prompts fail clearly.
- Use `--dry-run` first where commands support it.
- Destructive commands require `--force`; do not add it unless the user asked
for that exact mutation.
- Use `--gmail-no-send` or `GOG_GMAIL_NO_SEND=1` unless sending mail is the
requested task.
- For shared agent environments, prefer a baked readonly or agent-safe binary
from `docs/safety-profiles.md`.
Runtime command guards:
```bash
gog --enable-commands gmail.search,gmail.get --gmail-no-send \
--account user@example.com gmail search 'from:example@example.com' --json
gog --enable-commands drive.ls,docs.cat --disable-commands drive.delete \
--account user@example.com drive ls --max 10 --json
```
## Auth
OAuth setup is partly interactive. An agent can inspect and diagnose it, but a
human normally completes browser consent:
```bash
gog auth credentials list
gog auth add user@example.com --services gmail,calendar,drive --readonly
gog auth add user@example.com --services docs,sheets,slides
gog auth remove user@example.com
```
Use narrow services and `--readonly` when the task only reads. Service accounts
are Workspace-only and mainly fit Admin, Groups, Keep, and domain-wide
delegation flows; they do not solve consumer `@gmail.com` OAuth.
## Common Reads
```bash
gog --account user@example.com gmail search 'newer_than:3d' --max 10 --json
gog --account user@example.com gmail get <messageId> --sanitize-content --json
gog --account user@example.com gmail thread get <threadId> --sanitize-content --json
gog --account user@example.com calendar events --today --json
gog --account user@example.com drive ls --max 20 --json
gog --account user@example.com docs cat <documentId> --json
gog --account user@example.com sheets get <spreadsheetId> Sheet1!A1:D20 --json
gog --account user@example.com contacts list --max 20 --json
```
For Gmail body inspection, prefer `--sanitize-content` unless the user
explicitly needs raw payloads.
## Writes
Before writes, identify the account, object id, and exact mutation. Prefer
commands that support `--dry-run`, and clean up disposable live-test objects.
```bash
gog --account user@example.com docs write <documentId> --append --text '...'
gog --account user@example.com sheets update <spreadsheetId> Sheet1!A1 --values-json '[["hello"]]'
gog --account user@example.com drive upload ./file.txt --parent <folderId> --json
```
When testing creation commands, name artifacts with a clear temporary prefix and
delete or trash them after verification.
## Discovery
Use generated command docs and schema instead of guessing flags:
```bash
gog <service> --help
gog <service> <command> --help
gog schema <service> <command> --json
```
Docs:
- `docs/README.md`
- `docs/commands/README.md`
- `docs/safety-profiles.md`
- `README.md#security`
Repo paths:
- CLI entrypoint: `cmd/gog/`
- Command implementations: `internal/cmd/`
- OAuth/keyring: `internal/auth/`, `internal/secrets/`
- Generated command docs: `docs/commands/`

11
.dockerignore Normal file
View File

@ -0,0 +1,11 @@
.git
.github
.tools
**/node_modules
bin
dist
gog
gog.exe
*.test
coverage*
.DS_Store

View File

@ -10,14 +10,14 @@ concurrency:
jobs:
test:
runs-on: blacksmith-16vcpu-ubuntu-2404
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
cache: true
- uses: actions/cache@v4
- uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: .tools
key: ${{ runner.os }}-tools-${{ hashFiles('Makefile') }}
@ -26,23 +26,21 @@ jobs:
- name: Format check
run: make fmt-check
- name: Test
run: go test ./...
run: make test
- name: Lint
run: make lint
worker:
runs-on: blacksmith-16vcpu-ubuntu-2404
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: "20"
cache: "pnpm"
cache-dependency-path: internal/tracking/worker/pnpm-lock.yaml
node-version: "24"
- name: Enable Corepack (pnpm)
run: |
corepack enable
corepack prepare pnpm@10.27.0 --activate
corepack prepare pnpm@10.33.2 --activate
- name: Install dependencies
run: pnpm -C internal/tracking/worker install --frozen-lockfile
- name: Lint
@ -55,12 +53,12 @@ jobs:
windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
cache: true
- uses: actions/cache@v4
- uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: .tools
key: ${{ runner.os }}-tools-${{ hashFiles('Makefile') }}
@ -74,10 +72,11 @@ jobs:
# Skip tests that depend on macOS Keychain / Linux keyring or Unix path semantics.
# These are covered by ubuntu-latest and macos-latest jobs.
# See https://github.com/steipete/gogcli/issues/395
run: >-
go test ./...
-skip 'TestAuth|TestListClientCredentials|TestReadClientCredentials|TestConfigExists|TestExpandPath|TestResolveKeyringBackendInfo|TestLoadSecrets_LegacyFallback'
run: make test
shell: bash
env:
TEST_FLAGS: >-
-skip 'TestAuth|TestListClientCredentials|TestReadClientCredentials|TestConfigExists|TestExpandPath|TestResolveKeyringBackendInfo|TestLoadSecrets_LegacyFallback'
- name: Lint
run: make lint
shell: bash
@ -87,12 +86,12 @@ jobs:
darwin-cgo-build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
cache: true
- name: Test
run: go test ./...
run: make test
- name: Build (Keychain / cgo)
run: CGO_ENABLED=1 go build ./cmd/gog

96
.github/workflows/docker.yml vendored Normal file
View File

@ -0,0 +1,96 @@
name: docker
on:
pull_request:
paths:
- ".dockerignore"
- ".github/workflows/docker.yml"
- "Dockerfile"
- "cmd/**"
- "go.mod"
- "go.sum"
- "internal/**"
push:
tags:
- "v*"
workflow_dispatch:
inputs:
tag:
description: "Optional release tag to publish (e.g. v0.14.0)"
required: false
type: string
permissions:
contents: read
packages: write
jobs:
image:
runs-on: ubuntu-latest
steps:
- name: Validate manual tag
if: ${{ github.event_name == 'workflow_dispatch' && inputs.tag != '' }}
env:
RELEASE_TAG: ${{ inputs.tag }}
run: |
if ! echo "$RELEASE_TAG" | grep -qE '^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$'; then
echo "::error::Invalid tag format: $RELEASE_TAG"
exit 1
fi
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.tag || github.ref }}
- name: Docker metadata
id: meta
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0
with:
images: ghcr.io/steipete/gogcli
tags: |
type=ref,event=pr
type=ref,event=tag
type=raw,value=${{ inputs.tag }},enable=${{ github.event_name == 'workflow_dispatch' && inputs.tag != '' }}
type=raw,value=latest,enable=${{ (startsWith(github.ref, 'refs/tags/v') && !contains(github.ref_name, '-')) || (github.event_name == 'workflow_dispatch' && inputs.tag != '' && !contains(inputs.tag, '-')) }}
- name: Build metadata
id: build-meta
env:
RELEASE_TAG: ${{ inputs.tag }}
run: |
version="dev"
if [[ -n "$RELEASE_TAG" ]]; then
version="$RELEASE_TAG"
elif [[ "$GITHUB_REF_TYPE" == "tag" ]]; then
version="$GITHUB_REF_NAME"
fi
{
echo "version=$version"
echo "commit=${GITHUB_SHA::12}"
echo "date=$(date -u +%Y-%m-%dT%H:%M:%SZ)"
} >> "$GITHUB_OUTPUT"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Login to GHCR
if: ${{ startsWith(github.ref, 'refs/tags/v') || (github.event_name == 'workflow_dispatch' && inputs.tag != '') }}
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build image
uses: docker/build-push-action@ee4ca427a2f43b6a16632044ca514c076267da23 # v6.19.0
with:
context: .
push: ${{ startsWith(github.ref, 'refs/tags/v') || (github.event_name == 'workflow_dispatch' && inputs.tag != '') }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
VERSION=${{ steps.build-meta.outputs.version }}
COMMIT=${{ steps.build-meta.outputs.commit }}
DATE=${{ steps.build-meta.outputs.date }}

61
.github/workflows/pages.yml vendored Normal file
View File

@ -0,0 +1,61 @@
name: pages
on:
push:
branches:
- main
paths:
- "docs/**"
- "scripts/gen-command-reference.sh"
- "scripts/build-docs-site.mjs"
- "scripts/docs-site-assets.mjs"
- "Makefile"
- ".github/workflows/pages.yml"
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
jobs:
deploy:
name: Deploy docs
runs-on: ubuntu-latest
timeout-minutes: 10
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Check out
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set up Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
cache: true
- name: Set up Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: "24"
- name: Build docs site
run: make docs-site
- name: Configure Pages
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0
- name: Upload artifact
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
with:
path: dist/docs-site
- name: Deploy
id: deployment
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0

View File

@ -19,12 +19,12 @@ jobs:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Setup Go
uses: actions/setup-go@v5
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
cache: true
@ -32,15 +32,112 @@ jobs:
- name: Stash GoReleaser config
run: cp .goreleaser.yaml /tmp/.goreleaser.yaml
- name: Validate release tag
if: ${{ github.event_name == 'workflow_dispatch' }}
env:
RELEASE_TAG: ${{ inputs.tag }}
run: |
if ! echo "$RELEASE_TAG" | grep -qE '^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$'; then
echo "::error::Invalid tag format: $RELEASE_TAG"
exit 1
fi
- name: Checkout release tag
if: ${{ github.event_name == 'workflow_dispatch' }}
run: git checkout ${{ inputs.tag }}
env:
RELEASE_TAG: ${{ inputs.tag }}
run: git checkout "$RELEASE_TAG"
- name: Import macOS signing certificate
env:
MACOS_SIGNING_CERT_BASE64: ${{ secrets.MACOS_SIGNING_CERT_BASE64 }}
MACOS_SIGNING_CERT_PASSWORD: ${{ secrets.MACOS_SIGNING_CERT_PASSWORD }}
run: |
set -euo pipefail
if [ -z "$MACOS_SIGNING_CERT_BASE64" ]; then
echo "No macOS signing certificate configured; skipping import."
exit 0
fi
KEYCHAIN="build.keychain"
KEYCHAIN_PASSWORD="$(uuidgen)"
echo "$MACOS_SIGNING_CERT_BASE64" | base64 --decode > /tmp/codesign.p12
security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN"
security set-keychain-settings -lut 21600 "$KEYCHAIN"
security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN"
security default-keychain -s "$KEYCHAIN"
security list-keychains -d user -s "$KEYCHAIN"
security import /tmp/codesign.p12 -k "$KEYCHAIN" -P "$MACOS_SIGNING_CERT_PASSWORD" -T /usr/bin/codesign -T /usr/bin/security
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" "$KEYCHAIN"
- name: GoReleaser
uses: goreleaser/goreleaser-action@v6
uses: goreleaser/goreleaser-action@1a80836c5c9d9e5755a25cb59ec6f45a3b5f41a8 # v7.2.1
with:
distribution: goreleaser
version: latest
args: release --clean --config /tmp/.goreleaser.yaml
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GOG_CODESIGN_IDENTITY: ${{ secrets.MACOS_CODESIGN_IDENTITY }}
update-homebrew-tap:
runs-on: ubuntu-latest
needs: goreleaser
steps:
- name: Resolve release tag
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "RELEASE_TAG=${{ inputs.tag }}" >> "$GITHUB_ENV"
else
echo "RELEASE_TAG=${{ github.ref_name }}" >> "$GITHUB_ENV"
fi
- name: Dispatch tap formula update
env:
GH_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
run: |
if [ -z "$GH_TOKEN" ]; then
echo "::error::Set HOMEBREW_TAP_TOKEN with workflow access to steipete/homebrew-tap"
exit 1
fi
request_id="gogcli-${RELEASE_TAG}-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
expected_title="Update gogcli for ${RELEASE_TAG} (${request_id})"
gh workflow run update-formula.yml \
--repo steipete/homebrew-tap \
--ref main \
-f formula=gogcli \
-f tag="$RELEASE_TAG" \
-f repository=steipete/gogcli \
-f artifact_template="{formula}_{version}_{target}.tar.gz" \
-f request_id="$request_id"
run_id=""
for _ in {1..30}; do
run_id=$(gh run list \
--repo steipete/homebrew-tap \
--workflow update-formula.yml \
--branch main \
--event workflow_dispatch \
--limit 20 \
--json databaseId,displayTitle \
--jq ".[] | select(.displayTitle == \"$expected_title\") | .databaseId" | head -n1)
if [ -n "$run_id" ]; then
break
fi
sleep 5
done
if [ -z "$run_id" ]; then
echo "::error::Could not find tap workflow run with title: $expected_title"
exit 1
fi
gh run watch "$run_id" \
--repo steipete/homebrew-tap \
--exit-status \
--interval 10

2
.gitignore vendored
View File

@ -37,6 +37,8 @@ go.work.sum
# Local build output
bin/
/gog
internal/cmd/safety_profile_baked_gen.go
# Node (optional dev scripts)
node_modules/
dist/

View File

@ -120,6 +120,11 @@ linters:
- dupl
- wsl_v5
- tagliatelle
- path: internal/safetyprofile/.*\.go
linters:
- err113
- wrapcheck
- wsl_v5
- path: internal/googleauth/.*\.go
linters:
- tagliatelle

View File

@ -34,16 +34,21 @@ builds:
targets:
- darwin_amd64
- darwin_arm64
hooks:
post:
- ./scripts/codesign-macos.sh "{{ .Path }}"
archives:
- builds:
- ids:
- gog
- gog_darwin
format: tar.gz
formats:
- tar.gz
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
format_overrides:
- goos: windows
format: zip
formats:
- zip
checksum:
name_template: checksums.txt

View File

@ -40,7 +40,7 @@
- **Review mode (PR link only):** read `gh pr view/diff`; do not switch branches; do not change code.
- **Landing mode:** temp branch from `main`; bring in PR (squash default; rebase/merge when needed); fix; update `CHANGELOG.md` (PR #/issue + thanks); run `make ci`; final commit; merge to `main`; delete temp; end on `main`.
- If we squash, add `Co-authored-by:` for the PR author when appropriate; leave a PR comment with what landed + SHAs.
- If landing contributor work, always add `Co-authored-by:` trailers for PR authors, even when we partially rewrite, group, or manually apply their changes; leave a PR comment with what landed + SHAs.
- New contributor: thank in `CHANGELOG.md` (and update README contributors list if present).
## Security & Configuration Tips

View File

@ -1,27 +1,224 @@
# Changelog
## 0.12.0 - Unreleased
## 0.16.0 - Unreleased
## 0.15.0 - 2026-05-05
### Added
- Sheets: add `sheets insert` to insert rows/columns into a sheet. (#203) — thanks @andybergon.
- Sheets: add `sheets links` (alias `hyperlinks`) to list cell links from ranges, including rich-text links. (#374) — thanks @omothm.
- Sheets: add `sheets create --parent` to place new spreadsheets in a Drive folder. (#424) — thanks @ManManavadaria.
- Gmail: add `watch serve --history-types` filtering (`messageAdded|messageDeleted|labelAdded|labelRemoved`) and include `deletedMessageIds` in webhook payloads. (#168) — thanks @salmonumbrella.
- Contacts: support `--org`, `--title`, `--url`, `--note`, and `--custom` on create/update; include custom fields in get output with deterministic ordering. (#199) — thanks @phuctm97.
- Drive: add `drive ls --all` (alias `--global`) to list across all accessible files; make `--all` and `--parent` mutually exclusive. (#107) — thanks @struong.
- Export exact Google API JSON when the normal CLI view is too lossy: `docs raw`, `sheets raw`, `slides raw`, `drive raw`, `gmail raw`, `calendar raw`, `people raw`, `contacts raw`, `tasks raw`, and `forms raw`, with `--pretty`, safer Drive defaults, Sheets grid-data warnings, and a raw-output security audit. (#495, #496) — thanks @karbassi.
- Audit Drive storage without changing files: `drive tree`, `drive du`, and `drive inventory` now report folder contents, sizes, and inventory data for cleanup/review workflows. (#116) — thanks @rohan-patnaik.
- Find duplicate contacts safely: `contacts dedupe` is preview-only, matches by email/phone by default, supports opt-in name matching, and emits JSON/table merge plans without applying changes. (#116) — thanks @rohan-patnaik.
- Read Gmail messages in agent-safe form: `gmail get --sanitize-content` / `--safe` and `gmail thread get --sanitize-content` return sanitized content without exposing raw Gmail payloads in JSON. (#238, #220) — thanks @urasmutlu.
- Ship official container images: release tags now publish a non-root GHCR Docker image, with file-keyring docs for container automation. (#539, #444) — thanks @HuckOps and @rdehuyss.
- Request custom Drive fields: `drive ls --fields` and `drive get --fields` pass Drive API field masks for data beyond the default JSON set. (#495) — thanks @karbassi.
- Format Google Docs from the CLI: `docs format` and plain-text `docs write` formatting flags cover fonts, colors, bold/italic/underline/strikethrough, alignment, and line spacing. (#479) — thanks @mmaghsoodnia.
- Manage Google Docs tabs: `docs add-tab`, `docs rename-tab`, `docs delete-tab`, plus tab-scoped Markdown append and find-replace flows. (#547, #541) — thanks @chopenhauer and @donbowman.
- Work with structured Google Sheets tables: `sheets table` list/get/create/delete, `sheets table append`, and header-safe `sheets table clear`. (#470) — thanks @Pedrohgv.
- Format Sheets visually: `sheets conditional-format` and `sheets banding` add rule-based formatting and alternating color banded ranges. (#378) — thanks @codBang.
- Add Meet links to existing calendar events with `calendar update --with-meet`. (#538) — thanks @alexisperumal.
- Move calendar events between calendars with `calendar move` / `calendar transfer`, including organizer changes. (#448) — thanks @markusbkoch.
- Export Gmail filters as Gmail WebUI-importable Atom XML, while keeping API JSON export via `--format json`. (#174) — thanks @gwpl.
- Build safer agent binaries with baked `agent-safe`, `readonly`, and `full` safety profiles, fail-closed command filtering, filtered help/schema output, docs, and build tooling. (#366, #239) — thanks @drewburchfield.
- Use gog from coding agents more safely with the bundled `gog` skill for JSON-first Google Workspace automation. (#353, #451) — thanks @TimPietrusky and @sluramod.
### Fixed
- Calendar: respond patches only attendees to avoid custom reminders validation errors. (#265) — thanks @sebasrodriguez.
- Contacts: fix grouped parameter types in CRUD helpers to restore builds on newer Go toolchains. (#355) — thanks @laihenyi.
- Make full-mailbox backups survive large Gmail exports by promoting completed checkpoint shards into the final manifest and byte-splitting fallback message shards before GitHub rejects oversized blobs.
- Make backup exports more resumable and fault-tolerant by streaming decrypted shards, preserving Gmail Markdown mirrors, handling very large JSONL rows, and writing Markdown fallbacks for malformed MIME messages instead of aborting.
- Keep agent safety profiles harder to patch by compiling baked policies into generated hash switches instead of embedding raw allow/deny YAML strings. (#540) — thanks @drewburchfield.
- Show correct versions for `go install ...@tag` binaries by inferring module versions from Go build info when linker metadata is absent. (#545, #544) — thanks @joshavant.
- Accept the documented `calendar events list` / `ls` selector forms, including positional calendar IDs, `--cal`, `--calendars`, and `--all`. (#546) — thanks @BCudeOpenClaw.
- Keep `docs find-replace --dry-run` read-only while still reporting match counts, and allow empty replacement strings to delete matches safely. (#542) — thanks @chrismdp.
## 0.14.0 - 2026-04-28
### Added
- Backup: add `gog backup` with age-encrypted Git shards, Gmail labels/raw message export, Calendar/Contacts/Tasks/Drive metadata adapters, manifest status, full decrypt-and-verify, shard `cat`, local plaintext export, docs, and security-focused regression coverage.
- Backup: expand `gog backup push --services all` with Drive content export/download, Gmail settings, native Workspace Docs/Sheets/Slides/Form data, Apps Script projects, Chat, Classroom, best-effort optional service error shards, and plaintext Drive file export.
- Backup: extend `--services all` with Drive permissions/comments/revisions, Calendar ACL/settings/colors, contact groups, Cloud Identity groups, Workspace Admin Directory users/groups/members, Keep notes, and local Gmail message caching for resumable full-mailbox fetches.
- Backup: add `gog backup export --gmail-format markdown` for local readable Gmail mirrors with Markdown notes and extracted attachment files.
- Gmail: add `gmail messages search --body-format html` for returning HTML message bodies when `--include-body` is used. (#520) — thanks @alexknowshtml.
- Contacts: add `contacts export` for vCard 4.0 `.vcf` exports by resource, email/name search, or all contacts, including best-effort label categories. (#519, #500) — thanks @dinakars777.
- Docs: add experimental `docs export --tab` / `drive download --tab` to export a single Google Docs tab as PDF, DOCX, text, Markdown, or HTML. (#535) — thanks @johnbenjaminlewis.
- Slides: add `slides insert-text` and `slides replace-text` for editing existing slide text elements and replacing template tokens. (#521) — thanks @chrissanchez-iops.
- Drive: add `drive search --drive` and `--parent` for scoping search to a shared drive or folder. (#525) — thanks @LeanSheng.
- Calendar: add `--start-timezone` / `--end-timezone` to `calendar create` and `calendar update` for preserving named IANA event timezones when RFC3339 inputs only carry numeric offsets. (#422)
- Contacts: include birthdays in `contacts list` and `contacts search` text and JSON output. (#441)
- Auth: add `gog auth doctor` to diagnose keyring backend/password drift, unreadable file-keyring tokens, and refresh-token failures such as Workspace `invalid_rapt`. (#377, #338)
- Backup: bound individual Drive content exports with `--drive-content-timeout` so one stuck Google export records an encrypted error row instead of blocking the full backup.
- Backup: add Gmail message-list checkpoints, streaming shard construction, and stderr progress counters so full-mailbox backups can resume cleanly after interruption without keeping every raw message in RAM.
- Backup: push encrypted incomplete Gmail checkpoint commits during long cached fetches so day-scale mailbox backups have offsite progress before the final manifest is committed.
- Backup: push Gmail checkpoint commits through a single ordered background queue so cached fetches continue while GitHub uploads run.
- Slides docs: document the Markdown structure accepted by `slides create-from-markdown`. (#497)
- Google API: expose a reusable authenticated HTTP client for commands that need custom HTTP policies. (#534) — thanks @johnbenjaminlewis.
### Fixed
- Auth: keep `gog auth list` and `gog auth tokens list` useful when one file-keyring token cannot be decrypted; unreadable entries are now reported instead of aborting the whole listing. (#377)
- Auth: time out Linux D-Bus keyring write operations and report when OAuth completed but saving the refresh token failed, so manual auth no longer looks like a stuck paste when token persistence is blocked. (#130)
- Auth: store Google OIDC `sub` claims with OAuth tokens and migrate matching subject-keyed accounts when a Google email rename is reauthorized. (#504)
- Gmail: build outbound `Date` headers with the configured timezone so replies do not inherit a wrong host-local offset. (#514, #472) — thanks @dinakars777.
- Gmail: auto-fill draft reply subjects from the original message when `gmail drafts create --reply-to-message-id` omits `--subject`. (#488) — thanks @jbowerbir.
- Gmail: fall back to the People profile name for primary-account `From` headers when Gmail send-as settings omit a display name. (#431) — thanks @moeedahmed.
- Gmail: expose reply threading headers in default `gmail get --format metadata` output and fail explicit reply targets that cannot provide a `Message-ID`. (#528, #512) — thanks @solomonneas.
- Gmail: apply Gmail system-label filters for searches like `in:spam is:unread` so thread, message, and batch message searches do not return read spam. (#449)
- Gmail: preserve renewed watch expiration fields when a long-running `gmail watch serve` process records push delivery state after `gmail watch renew` runs separately. (#526)
- Gmail: reuse the shared paginated list runner for thread and message search so `--all`, `--page`, text, and JSON output stay consistent.
- Gmail: clarify that `gmail batch delete` is permanent and point default-scope workflows at `gmail trash`. (#151)
- Drive/Docs/Sheets/Slides: treat `--out -` as stdout for downloads and exports instead of creating `-`/`-.ext` files; reject `--json --out -` to keep byte streams parseable. (#286)
- Docs: deprecate editing-command `--tab-id` in favor of `--tab`, and resolve tab titles to canonical tab IDs before mutations. (#533) — thanks @johnbenjaminlewis.
- Docs: convert Markdown formatting for `docs write --append --markdown` instead of appending raw Markdown syntax. (#530, #272) — thanks @eric-x-liu.
- Docs: include available tab names when `docs cat --tab` / structure lookup cannot find the requested tab. (#532) — thanks @johnbenjaminlewis.
- Docs: size remote Markdown images consistently for `docs write --replace --markdown` by reusing the Docs image insertion path after Drive conversion, and return a clear error for local image paths that the Docs API cannot fetch directly. (#518) — thanks @vinothd-oai.
- Drive: print large upload progress to stderr while keeping JSON output parseable. (#529)
- Drive: include `hasThumbnail` and `thumbnailLink` in `drive ls`, `drive search`, and `drive get` JSON responses. (#486) — thanks @gtapps.
- Drive: include `driveId` in `drive ls`, `drive search`, and `drive get` field masks so Shared Drive files can be identified in JSON output. (#524) — thanks @LeanSheng.
- Calendar: display `calendar events` times and JSON local fields in the calendar timezone instead of preserving arbitrary event offsets. (#493)
- Email tracking: add versioned tracking-key rotation so new pixels use the current key while old tracking ids keep decrypting through prior keys. (#293)
- Email tracking: deduplicate repeated pixel opens and cap recorded opens per IP per hour to reduce D1 abuse from replay or high-volume requests. (#294)
- Email tracking: add daily Worker retention cleanup for open rows older than 90 days and cap admin `/opens` responses at 500 rows. (#292)
- Email tracking: make `gmail track setup --deploy` reusable with existing D1 databases and valid temporary Wrangler configs.
- Backup: split Gmail checkpoint commits by row count and plaintext byte size so large messages stay below GitHub's blob limit.
- Secrets: time out macOS Keychain read/write/list operations with a clear recovery hint instead of hanging indefinitely when a permission prompt cannot surface. (#515, #513) — thanks @sardoru.
- Secrets: encode file-backend key names so stored tokens work on Windows, while still reading/removing legacy raw entries. (#527, #502) — thanks @solomonneas.
- CLI: show direct Google Cloud API enablement links and matching `auth add --services ...` hints when Google returns API-not-enabled errors.
- Install docs: document Windows release ZIP/PATH setup and clarify that source builds require the Go version declared in `go.mod`, not Ubuntu 24.04's Go 1.22 package. (#157, #135)
- Auth docs: clarify that consumer Gmail refresh tokens expire after 7 days when the OAuth app remains External + Testing, and that publishing the personal OAuth app is the long-lived-token path. (#121)
- CI: pin GitHub Actions workflow dependencies to immutable commit SHAs. (#288)
## 0.13.0 - 2026-04-20
### Highlights
- Gmail: safer sending and richer message workflows, with no-send guardrails, forwarding, autoreplies, full-body search output, label styling, and better MIME/body handling. (#454, #482, #447, #457, #476, #477, #511) — thanks @veteranbv, @spencer-c-reed, @GodsBoy, @iskw9973, @shashankkr9, @yeager, and @dinakars777.
- Drive/Docs/Slides: smoother content round-trips with Markdown-to-Docs upload conversion, restored Markdown replace writes, rendered slide thumbnails, commenter sharing, and better Docs sed formatting. (#487, #501, #498, #443, #483) — thanks @johnbenjaminlewis, @twilsher, @gianpaj, @pavelzak, and @bill492.
- Sheets: chart management lands, including list/inspect/create/update/delete and a chart-range fix for sheet ID 0. (#434) — thanks @andybergon.
- Calendar: create secondary calendars and get more predictable timezone/day-bound behavior. (#455, #492, #509, #510) — thanks @alexknowshtml, @RaphaelRUzan, and @dinakars777.
- Auth and agent safety: credential cleanup, Google Ads auth, keyring namespace overrides, command denylists, and safer send-operation controls. (#473, #264, #463, #218, #173, #454) — thanks @yamagucci, @ufkhan97, @mkurz, @EricYangTL, @spookyuser, and @veteranbv.
### Added
- Gmail: add `--gmail-no-send`, `GOG_GMAIL_NO_SEND`, `gmail_no_send`, and per-account `config no-send` guards for blocking send operations. (#454) — thanks @veteranbv.
- Gmail: add `gmail forward` / `gmail fwd` to forward a message with optional note, verified send-as alias, and original attachments. (#482) — thanks @spencer-c-reed.
- Gmail: add `gmail autoreply` to reply once to matching messages, label the thread for dedupe, and optionally archive/mark read.
- Gmail: add `gmail messages search --full` to print complete message bodies instead of truncating text output. (#447) — thanks @GodsBoy.
- Gmail: add `gmail labels style` to update user label colors and list/message visibility. (#457) — thanks @iskw9973.
- Drive: convert Markdown uploads to Google Docs and strip leading YAML frontmatter by default, with `--keep-frontmatter` to opt out. (#487) — thanks @johnbenjaminlewis.
- Drive: allow `drive share --role commenter` for comment-only sharing. (#443) — thanks @pavelzak.
- Drive: show owner email in `drive ls` and `drive search` table output. (#458) — thanks @laihenyi.
- Slides: add `slides thumbnail` / `slides thumb` to fetch rendered slide thumbnail URLs or download PNG/JPEG images. (#498) — thanks @gianpaj.
- Sheets: add `sheets chart` to list, inspect, create, update, and delete embedded charts. (#434) — thanks @andybergon.
- Sheets: add `add-sheet`, `rename-sheet`, and `delete-sheet` tab aliases plus `sheets add-tab --index`. (#442) — thanks @alexknowshtml.
- Calendar: add `calendar create-calendar` / `new-calendar` to create secondary calendars with description, timezone, and location. (#455) — thanks @alexknowshtml.
- Auth: add `auth credentials remove` to delete stored OAuth client credentials and associated refresh tokens. (#473) — thanks @yamagucci.
- Auth: add `ads` as an auth service for Google Ads API tokens. (#264) — thanks @ufkhan97.
- Secrets: allow `GOG_KEYRING_SERVICE_NAME` to override the keyring namespace. (#463) — thanks @mkurz.
- Agent safety: allow dotted command paths in `--enable-commands` and add `--disable-commands` / `GOG_DISABLE_COMMANDS` denylist support. (#218, #173) — thanks @EricYangTL and @spookyuser.
- Contacts: add `--gender` to `contacts create` and `contacts update`, and include gender in `contacts get` text output. (#438) — thanks @klodr.
- Chat: make `chat spaces find` use case-insensitive substring matching by default, with `--exact` for legacy exact lookup. (#506) — thanks @mvanhorn.
### Fixed
- Calendar: avoid ambiguous timezone guessing from offset-only event times, preserve timezones for focus-time events, and use exclusive next-midnight bounds for full-day ranges. (#492, #509, #510) — thanks @RaphaelRUzan and @dinakars777.
- Gmail: preserve sent and received body content by using quoted-printable plain text, non-`7bit` non-ASCII HTML, and safer UTF-8 charset handling. (#476, #477, #511) — thanks @shashankkr9, @yeager, and @dinakars777.
- Docs: restore `docs write --replace --markdown` conversion and preserve sed formatting ranges, UTF-16 offsets, and `&` whole-match replacements. (#501, #483) — thanks @twilsher and @bill492.
- Sheets: preserve valid chart ranges that target sheet ID 0 while still remapping sample-style zero IDs when the spreadsheet has no zero-ID sheet. (#434) — thanks @andybergon.
- Auth: remove stale aliases and account-client mappings from config when `auth remove` deletes an account. (#467) — thanks @mvanhorn.
- Contacts: reject all individual update flags when `contacts update --from-file` is used. (#439) — thanks @klodr.
- Tasks: clear task due dates when `tasks update --due=` is provided. (#507) — thanks @dinakars777.
- CLI: generate native zsh completions without relying on `bashcompinit`. (#481) — thanks @piiq.
- Windows: expand `~\...` paths and run the integration live-test wrapper through PowerShell. (#452) — thanks @gagradebnath.
- Tracking: prefer file-stored tracking secrets over stale keyring values unless keyring storage is configured. (#469) — thanks @alexuser.
- Time parsing: accept `tues`, `thur`, and `thurs` as weekday expressions. (#440) — thanks @sjhddh.
## 0.12.0 - 2026-03-09
### Highlights
- Admin: full Workspace Admin users/groups coverage for common directory operations. (#403) — thanks @dl-alexandre.
- Auth: new headless/cloud auth paths with ADC, direct access tokens, custom callbacks, proxy-safe loopback settings, and extra-scope controls. (#357, #419, #227, #398, #421) — thanks @tengis617, @mmkal, @cyberfox, @salmonumbrella, and @peteradams2026.
- Docs: much stronger document editing and export flow with tab targeting, richer find-replace, pageless mode, and native Markdown/HTML export. (#330, #305, #300, #282, #141) — thanks @ignacioreyna, @chparsons, @shohei-majima, @fprochazka, and @in-liberty420.
- Sheets: spreadsheet editing/formatting expands significantly with named ranges, tab management, notes, find-replace, formatting controls, inserts, links, and format inspection. (#278, #309, #430, #341, #320, #203, #374, #284) — thanks @TheCrazyLex, @JulienMalige, @andybergon, @Shehryar, @omothm, and @nilzzzzzz.
- Calendar: aliases, subscribe, and selector parity make multi-calendar workflows much easier. (#393, #327, #319) — thanks @salmonumbrella and @cdthompson.
- Forms/Slides/Keep: forms management + watches, slides from templates, and first write/delete coverage for Keep. (#274, #273, #413) — thanks @alexknowshtml, @penguinco, and @jgwesterlund.
### Added
- 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 accounts calendar list. (#327) — thanks @cdthompson.
- Gmail: add `gmail send --signature`, `--signature-from`, and `--signature-file` to append Gmail send-as or local signatures before sending. (#180, #183) — thanks @kesslerio and @salmonumbrella.
- 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.
- Gmail: add a fetch delay in `watch serve` so History API reads don't race message indexing. (#397) — thanks @salmonumbrella.
- Gmail: allow Workspace-managed send-as aliases with empty verification status in `send` and `drafts create`. (#407) — thanks @salmonumbrella.
- Gmail: preserve the selected `--client` during `watch serve` push handling instead of falling back to the default client. (#411) — thanks @chrysb.
- Secrets: respect empty `GOG_KEYRING_PASSWORD` (treat set-to-empty as intentional; avoids headless prompts). (#269) — thanks @zerone0x.
- Calendar: reject ambiguous calendar-name selectors for `calendar events` instead of guessing. (#131) — thanks @salmonumbrella.
- 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.
- 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 dont 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 dont 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.
- Gmail: retry transient `failedPrecondition` errors during `gmail filters create` and return the existing matching filter on duplicate creates, so reruns stay idempotent.
- 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` doesnt 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.
- Secrets: respect empty `GOG_KEYRING_PASSWORD` (treat set-to-empty as intentional; avoids headless prompts). (#269) — 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.
## 0.11.0 - 2026-02-15

40
Dockerfile Normal file
View File

@ -0,0 +1,40 @@
# syntax=docker/dockerfile:1.7
ARG GO_VERSION=1.26.2
ARG ALPINE_VERSION=3.22
FROM golang:${GO_VERSION}-alpine AS build
RUN apk add --no-cache ca-certificates git tzdata
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
ARG VERSION=dev
ARG COMMIT=unknown
ARG DATE=unknown
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath \
-ldflags="-s -w -X github.com/steipete/gogcli/internal/cmd.version=${VERSION} -X github.com/steipete/gogcli/internal/cmd.commit=${COMMIT} -X github.com/steipete/gogcli/internal/cmd.date=${DATE}" \
-o /out/gog ./cmd/gog
FROM alpine:${ALPINE_VERSION}
LABEL org.opencontainers.image.source="https://github.com/steipete/gogcli"
LABEL org.opencontainers.image.description="Google services CLI for terminal automation"
LABEL org.opencontainers.image.licenses="MIT"
RUN apk add --no-cache ca-certificates tzdata \
&& adduser -D -u 10001 -h /home/gog gog
ENV HOME=/home/gog
WORKDIR /home/gog
COPY --from=build /out/gog /usr/local/bin/gog
USER gog
ENTRYPOINT ["gog"]
CMD ["--help"]

View File

@ -1,6 +1,6 @@
MIT License
\g<1>2026 Peter Steinberger
Copyright (c) 2026 Peter Steinberger
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -3,7 +3,7 @@ SHELL := /bin/bash
# `make` should build the binary by default.
.DEFAULT_GOAL := build
.PHONY: build gog gogcli gog-help gogcli-help help fmt fmt-check lint test ci tools
.PHONY: build build-safe gog gogcli gog-help gogcli-help help fmt fmt-check lint test ci tools docs-commands docs-site docs-check
.PHONY: worker-ci
BIN_DIR := $(CURDIR)/bin
@ -14,13 +14,17 @@ VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
COMMIT := $(shell git rev-parse --short=12 HEAD 2>/dev/null || echo "")
DATE := $(shell date -u +%Y-%m-%dT%H:%M:%SZ)
LDFLAGS := -X github.com/steipete/gogcli/internal/cmd.version=$(VERSION) -X github.com/steipete/gogcli/internal/cmd.commit=$(COMMIT) -X github.com/steipete/gogcli/internal/cmd.date=$(DATE)
# `make lint` already covers vet-equivalent checks; skip duplicate work in `make test`.
GO_TEST_FLAGS ?= -vet=off
TEST_FLAGS ?=
TEST_PKGS ?= ./...
TOOLS_DIR := $(CURDIR)/.tools
GOFUMPT := $(TOOLS_DIR)/gofumpt
GOIMPORTS := $(TOOLS_DIR)/goimports
GOLANGCI_LINT := $(TOOLS_DIR)/golangci-lint
TOOLS_STAMP := $(TOOLS_DIR)/.versions
TOOLS_VERSION := gofumpt=v0.9.2;goimports=v0.42.0;golangci-lint=v2.10.1
TOOLS_VERSION := gofumpt=v0.9.2;goimports=v0.44.0;golangci-lint=v2.11.4
# Allow passing CLI args as extra "targets":
# make gogcli -- --help
@ -34,6 +38,9 @@ build:
@mkdir -p $(BIN_DIR)
@go build -ldflags "$(LDFLAGS)" -o $(BIN) $(CMD)
build-safe:
@./build-safe.sh $${PROFILE:-safety-profiles/agent-safe.yaml} -o $${OUTPUT:-$(BIN_DIR)/gog-safe}
gog: build
@if [ -n "$(RUN_ARGS)" ]; then \
$(BIN) $(RUN_ARGS); \
@ -60,14 +67,23 @@ gogcli-help: build
help: gog-help
docs-commands: build
@scripts/gen-command-reference.sh docs/commands.generated.md
docs-site: docs-commands
@node scripts/build-docs-site.mjs
docs-check: docs-site
@node scripts/check-docs-coverage.mjs
tools:
@mkdir -p $(TOOLS_DIR)
@if [ -x "$(GOFUMPT)" ] && [ -x "$(GOIMPORTS)" ] && [ -x "$(GOLANGCI_LINT)" ] && [ "$$(cat $(TOOLS_STAMP) 2>/dev/null)" = "$(TOOLS_VERSION)" ]; then \
echo "tools up to date"; \
else \
GOBIN=$(TOOLS_DIR) go install mvdan.cc/gofumpt@v0.9.2; \
GOBIN=$(TOOLS_DIR) go install golang.org/x/tools/cmd/goimports@v0.42.0; \
GOBIN=$(TOOLS_DIR) go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.10.1; \
GOBIN=$(TOOLS_DIR) go install golang.org/x/tools/cmd/goimports@v0.44.0; \
GOBIN=$(TOOLS_DIR) go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.11.4; \
printf '%s\n' "$(TOOLS_VERSION)" > "$(TOOLS_STAMP)"; \
fi
@ -91,7 +107,7 @@ pnpm-gate:
fi
test:
@go test ./...
@go test $(GO_TEST_FLAGS) $(TEST_FLAGS) $(TEST_PKGS)
ci: pnpm-gate fmt-check lint test

1755
README.md

File diff suppressed because it is too large Load Diff

79
build-safe.sh Executable file
View File

@ -0,0 +1,79 @@
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"
usage() {
cat >&2 <<'USAGE'
Usage: ./build-safe.sh <profile.yaml> [-o output]
Examples:
./build-safe.sh safety-profiles/readonly.yaml
./build-safe.sh safety-profiles/agent-safe.yaml -o /usr/local/bin/gog-safe
USAGE
}
if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
usage
exit 0
fi
if [[ -z "${1:-}" || "${1:-}" == -* ]]; then
usage
exit 2
fi
PROFILE="$1"
shift
OUTPUT="bin/gog-safe"
while [[ $# -gt 0 ]]; do
case "$1" in
-o|--output)
if [[ -z "${2:-}" ]]; then
echo "error: $1 requires a path" >&2
exit 2
fi
OUTPUT="$2"
shift 2
;;
-h|--help)
usage
exit 0
;;
*)
echo "error: unknown flag: $1" >&2
usage
exit 2
;;
esac
done
if [[ ! -f "$PROFILE" ]]; then
echo "error: profile not found: $PROFILE" >&2
exit 1
fi
GEN_FILE="internal/cmd/safety_profile_baked_gen.go"
cleanup() {
rm -f "$GEN_FILE"
}
trap cleanup EXIT
cleanup
go run ./cmd/bake-safety-profile "$PROFILE" "$GEN_FILE"
VERSION=$(git describe --tags --always --dirty 2>/dev/null || echo dev)
COMMIT=$(git rev-parse --short=12 HEAD 2>/dev/null || echo "")
DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
LDFLAGS="-X github.com/steipete/gogcli/internal/cmd.version=${VERSION}-safe -X github.com/steipete/gogcli/internal/cmd.commit=${COMMIT} -X github.com/steipete/gogcli/internal/cmd.date=${DATE}"
mkdir -p "$(dirname "$OUTPUT")"
go build -tags safety_profile -ldflags "$LDFLAGS" -o "$OUTPUT" ./cmd/gog
RUN_OUTPUT="$OUTPUT"
if [[ "$RUN_OUTPUT" != */* ]]; then
RUN_OUTPUT="./$RUN_OUTPUT"
fi
"$RUN_OUTPUT" --version
echo "built $OUTPUT with baked safety profile $PROFILE"

View File

@ -0,0 +1,115 @@
package main
import (
"bytes"
"fmt"
"os"
"strconv"
"strings"
"github.com/steipete/gogcli/internal/safetyprofile"
)
const usage = `Usage: bake-safety-profile <profile.yaml> <output.go>` + "\n"
func main() {
args := os.Args[1:]
if len(args) != 2 {
_, _ = fmt.Fprint(os.Stderr, usage)
os.Exit(2)
}
raw, err := os.ReadFile(args[0]) // #nosec G304 G703 -- build helper intentionally reads the requested profile path.
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "read profile: %v\n", err)
os.Exit(1)
}
profile, err := safetyprofile.Parse(string(raw))
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "parse profile: %v\n", err)
os.Exit(1)
}
out := generate(profile)
if err := os.WriteFile(args[1], out, 0o600); err != nil { // #nosec G306 G703 -- build helper intentionally writes the requested generated Go path.
_, _ = fmt.Fprintf(os.Stderr, "write output: %v\n", err)
os.Exit(1)
}
}
// generate emits a Go file that resolves the bakedSafety* package-level
// functions for safety_profile builds. Allow and deny rules are encoded as
// FNV-64a hashes in switch statements so that the rule set itself is no
// longer a contiguous, patchable string in the binary.
func generate(profile *safetyprofile.Profile) []byte {
var out bytes.Buffer
hasAllowRules := profile.AllowAll || len(profile.AllowRules) > 0
out.WriteString("// Code generated by cmd/bake-safety-profile; DO NOT EDIT.\n")
commentName := strings.ReplaceAll(strings.ReplaceAll(profile.Name, "\n", " "), "\r", " ")
fmt.Fprintf(&out, "// Profile: %s (%d allow, %d deny, allow-all=%t)\n", commentName, len(profile.AllowRules), len(profile.DenyRules), profile.AllowAll)
out.WriteString("// Hash: FNV-64a over dotted command paths.\n")
out.WriteString("//go:build safety_profile\n\n")
out.WriteString("package cmd\n\n")
out.WriteString("const bakedSafetyProfileNameConst = ")
out.WriteString(strconv.Quote(profile.Name))
out.WriteString("\n\n")
out.WriteString("func bakedSafetyEnabled() bool { return true }\n")
out.WriteString("func bakedSafetyProfileName() string { return bakedSafetyProfileNameConst }\n")
fmt.Fprintf(&out, "func bakedSafetyHasAllowRules() bool { return %t }\n\n", hasAllowRules)
writeMatcher(&out, "bakedSafetyAllowMatch", profile.AllowRules, profile.AllowAll)
out.WriteString("\n")
writeMatcher(&out, "bakedSafetyDenyMatch", profile.DenyRules, false)
return out.Bytes()
}
func writeMatcher(out *bytes.Buffer, name string, rules []string, matchAll bool) {
fmt.Fprintf(out, "func %s(path []string) bool {\n", name)
if matchAll {
out.WriteString("\treturn true\n}\n")
return
}
if len(rules) == 0 {
out.WriteString("\treturn false\n}\n")
return
}
out.WriteString("\tif len(path) == 0 {\n\t\treturn false\n\t}\n")
out.WriteString("\tfor i := 1; i <= len(path); i++ {\n")
out.WriteString("\t\tswitch bakedSafetyHashPath(path[:i]) {\n")
out.WriteString("\t\tcase ")
cases := make([]string, 0, len(rules))
seen := make(map[uint64]string, len(rules))
for _, rule := range rules {
h := safetyprofile.HashRule(rule)
if existing, dup := seen[h]; dup {
fmt.Fprintf(os.Stderr, "bake-safety-profile: hash collision between %q and %q (FNV-64a=%#x); pick a different name or extend the hash\n", existing, rule, h)
os.Exit(1)
}
seen[h] = rule
cases = append(cases, fmt.Sprintf("0x%016x", h))
}
const perLine = 4
for i, c := range cases {
out.WriteString(c)
if i == len(cases)-1 {
break
}
out.WriteString(",")
if (i+1)%perLine == 0 {
out.WriteString("\n\t\t\t")
} else {
out.WriteString(" ")
}
}
out.WriteString(":\n\t\t\treturn true\n")
out.WriteString("\t\t}\n\t}\n")
out.WriteString("\treturn false\n}\n")
}

View File

@ -0,0 +1,138 @@
package main
import (
"bytes"
"fmt"
"go/parser"
"go/token"
"strings"
"testing"
"github.com/steipete/gogcli/internal/safetyprofile"
)
func TestGenerateProducesParseableGoWithExpectedHashes(t *testing.T) {
profile := &safetyprofile.Profile{
Name: "test",
AllowAll: false,
AllowRules: []string{"version", "gmail.search", "gmail.drafts.create"},
DenyRules: []string{"gmail.send", "gmail.drafts.send"},
}
out := generate(profile)
if _, err := parser.ParseFile(token.NewFileSet(), "gen.go", out, parser.AllErrors); err != nil {
t.Fatalf("generated code does not parse as Go:\n%s\n\nerror: %v", out, err)
}
want := []string{
`//go:build safety_profile`,
`package cmd`,
`const bakedSafetyProfileNameConst = "test"`,
`func bakedSafetyEnabled() bool { return true }`,
`func bakedSafetyHasAllowRules() bool { return true }`,
}
for _, line := range want {
if !bytes.Contains(out, []byte(line)) {
t.Fatalf("generated output missing %q\n\nfull output:\n%s", line, out)
}
}
for _, rule := range profile.AllowRules {
hex := fmt.Sprintf("0x%016x", safetyprofile.HashRule(rule))
if !bytes.Contains(out, []byte(hex)) {
t.Fatalf("expected allow hash %s for rule %q in output", hex, rule)
}
}
for _, rule := range profile.DenyRules {
hex := fmt.Sprintf("0x%016x", safetyprofile.HashRule(rule))
if !bytes.Contains(out, []byte(hex)) {
t.Fatalf("expected deny hash %s for rule %q in output", hex, rule)
}
}
for _, rule := range profile.AllowRules {
if bytes.Contains(out, []byte(fmt.Sprintf("%q", rule))) {
t.Fatalf("rule string %q must not appear in generated output", rule)
}
}
for _, rule := range profile.DenyRules {
if bytes.Contains(out, []byte(fmt.Sprintf("%q", rule))) {
t.Fatalf("rule string %q must not appear in generated output", rule)
}
}
}
func TestGenerateSanitizesProfileNameInComment(t *testing.T) {
profile := &safetyprofile.Profile{
Name: "bad\nname\rwith-controls",
AllowAll: true,
DenyRules: []string{},
}
out := generate(profile)
if _, err := parser.ParseFile(token.NewFileSet(), "gen.go", out, parser.AllErrors); err != nil {
t.Fatalf("generated code with control chars in name does not parse:\n%s\n\nerror: %v", out, err)
}
if bytes.Contains(out, []byte("\nname\r")) || bytes.Contains(out, []byte("\nname\n")) {
t.Fatalf("comment header leaked control chars from profile name:\n%s", out)
}
}
func TestGenerateAllowAllEmitsConstantTrue(t *testing.T) {
profile := &safetyprofile.Profile{
Name: "full",
AllowAll: true,
DenyRules: []string{},
}
out := string(generate(profile))
allowFn := extractFunc(t, out, "bakedSafetyAllowMatch")
if !strings.Contains(allowFn, "return true") || strings.Contains(allowFn, "switch ") {
t.Fatalf("AllowAll allow matcher should be `return true` only, got:\n%s", allowFn)
}
denyFn := extractFunc(t, out, "bakedSafetyDenyMatch")
if !strings.Contains(denyFn, "return false") {
t.Fatalf("empty deny matcher should `return false`, got:\n%s", denyFn)
}
}
func TestGenerateEmptyAllowEmitsConstantFalse(t *testing.T) {
profile := &safetyprofile.Profile{
Name: "deny-only",
AllowAll: false,
DenyRules: []string{"gmail.send"},
}
out := string(generate(profile))
if !strings.Contains(out, "func bakedSafetyHasAllowRules() bool { return false }") {
t.Fatalf("expected hasAllowRules=false for deny-only profile, got:\n%s", out)
}
allowFn := extractFunc(t, out, "bakedSafetyAllowMatch")
if !strings.Contains(allowFn, "return false") || strings.Contains(allowFn, "switch ") {
t.Fatalf("empty allow matcher should be `return false` only, got:\n%s", allowFn)
}
}
func extractFunc(t *testing.T, src, name string) string {
t.Helper()
start := strings.Index(src, "func "+name+"(")
if start < 0 {
t.Fatalf("function %s not found in:\n%s", name, src)
}
depth := 0
for i := start; i < len(src); i++ {
switch src[i] {
case '{':
depth++
case '}':
depth--
if depth == 0 {
return src[start : i+1]
}
}
}
t.Fatalf("function %s has unbalanced braces", name)
return ""
}

View File

@ -24,6 +24,10 @@ Assumptions:
- Go toolchain installed (Go version comes from `go.mod`).
- `make` works locally.
- Access to the tap repo (e.g. `steipete/homebrew-tap`).
- For signed macOS release binaries (recommended): GitHub Actions secrets set:
- `MACOS_SIGNING_CERT_BASE64` (base64-encoded `.p12`)
- `MACOS_SIGNING_CERT_PASSWORD`
- `MACOS_CODESIGN_IDENTITY` (e.g. `Developer ID Application: …`)
## 1) Verify build is green
```sh
@ -71,7 +75,14 @@ gh workflow run release.yml -f tag=vX.Y.Z
## 5) Update (or add) the Homebrew formula
In the tap repo (assumed sibling at `../homebrew-tap`), create/update `Formula/gogcli.rb`.
Recommended formula shape (build-from-source, no binary assets needed):
Recommended formula shape (download GitHub release assets; preserves macOS code signature):
- `version "X.Y.Z"`
- `url "https://github.com/steipete/gogcli/releases/download/vX.Y.Z/gogcli_X.Y.Z_darwin_arm64.tar.gz"` (or `darwin_amd64`)
- `sha256 "<sha256>"`
- Install:
- `bin.install "gog"`
Alternative (build-from-source; macOS binary will be ad-hoc signed, which can trigger repeated Keychain prompts with `KeychainTrustApplication`):
- `version "X.Y.Z"`
- `url "https://github.com/steipete/gogcli/archive/refs/tags/vX.Y.Z.tar.gz"`
- `sha256 "<sha256>"`

View File

@ -1,489 +0,0 @@
:root {
--bg0: #07070b;
--bg1: #0b0b11;
--bg2: #11111a;
--card: rgba(17, 17, 26, 0.72);
--card2: rgba(12, 12, 18, 0.64);
--stroke: rgba(255, 255, 255, 0.08);
--stroke2: rgba(255, 255, 255, 0.05);
--text: #f3f4f6;
--muted: rgba(243, 244, 246, 0.7);
--dim: rgba(243, 244, 246, 0.46);
--b: #4285f4;
--r: #ea4335;
--y: #fbbc05;
--g: #34a853;
--shadow: 0 24px 60px rgba(0, 0, 0, 0.55);
--shadow2: 0 16px 40px rgba(0, 0, 0, 0.45);
--radius: 16px;
--radius2: 22px;
--serif: "Fraunces", ui-serif, Georgia, serif;
--sans: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
}
* {
box-sizing: border-box;
}
html,
body {
height: 100%;
}
body {
margin: 0;
background: radial-gradient(1200px 800px at 50% -20%, rgba(66, 133, 244, 0.18), transparent 60%),
radial-gradient(900px 700px at 80% 18%, rgba(234, 67, 53, 0.14), transparent 55%),
radial-gradient(1000px 900px at 18% 62%, rgba(52, 168, 83, 0.14), transparent 55%),
radial-gradient(900px 900px at 65% 88%, rgba(251, 188, 5, 0.12), transparent 55%),
linear-gradient(180deg, var(--bg0), var(--bg1) 40%, var(--bg0));
color: var(--text);
font-family: var(--sans);
-webkit-font-smoothing: antialiased;
line-height: 1.55;
overflow-x: hidden;
}
a {
color: inherit;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
code {
font-family: var(--mono);
font-size: 0.95em;
}
.skip {
position: absolute;
left: -999px;
top: 10px;
background: var(--bg2);
border: 1px solid var(--stroke);
color: var(--text);
padding: 10px 12px;
border-radius: 10px;
z-index: 20;
}
.skip:focus {
left: 12px;
}
.bg {
position: fixed;
inset: 0;
pointer-events: none;
z-index: 0;
}
.bg__mesh {
position: absolute;
inset: 0;
background: radial-gradient(1200px 800px at 20% 20%, rgba(66, 133, 244, 0.18), transparent 60%),
radial-gradient(1000px 800px at 82% 30%, rgba(234, 67, 53, 0.12), transparent 55%),
radial-gradient(1000px 900px at 40% 85%, rgba(52, 168, 83, 0.12), transparent 55%);
filter: blur(4px) saturate(1.12);
opacity: 0.95;
}
.bg__grid {
position: absolute;
inset: -2px;
background-image: linear-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
background-size: 72px 72px;
opacity: 0.055;
transform: perspective(900px) rotateX(58deg) translateY(-18%);
transform-origin: top;
mask-image: radial-gradient(60% 60% at 50% 30%, rgba(0, 0, 0, 1), transparent 72%);
}
.bg__grain {
position: absolute;
inset: 0;
opacity: 0.2;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)' opacity='.45'/%3E%3C/svg%3E");
mix-blend-mode: overlay;
}
.wrap {
width: min(1100px, calc(100% - 48px));
margin: 0 auto;
position: relative;
z-index: 1;
}
.top {
position: sticky;
top: 0;
z-index: 10;
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
background: rgba(7, 7, 11, 0.58);
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.top__row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 14px 0;
}
.brand {
display: flex;
align-items: center;
gap: 10px;
text-decoration: none !important;
}
.brand__mark {
width: 26px;
height: 26px;
border-radius: 10px;
background: conic-gradient(from 200deg, var(--b), var(--g), var(--y), var(--r), var(--b));
box-shadow: 0 10px 24px rgba(66, 133, 244, 0.15), 0 10px 24px rgba(52, 168, 83, 0.12);
}
.brand__mark--small {
width: 18px;
height: 18px;
border-radius: 7px;
}
.brand__name {
font-family: var(--mono);
font-weight: 500;
letter-spacing: -0.02em;
}
.brand__tag {
font-size: 12px;
color: var(--dim);
border: 1px solid var(--stroke2);
background: rgba(17, 17, 26, 0.55);
padding: 3px 8px;
border-radius: 999px;
}
.nav {
display: flex;
align-items: center;
gap: 18px;
font-size: 14px;
color: var(--muted);
}
.nav a {
text-decoration: none;
}
.nav a:hover {
color: var(--text);
text-decoration: none;
}
.nav__cta {
color: var(--text) !important;
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.08);
padding: 8px 12px;
border-radius: 999px;
}
.main {
padding-bottom: 70px;
}
.hero {
padding: 56px 0 26px;
}
.hero__grid {
display: grid;
grid-template-columns: 1.05fr 0.95fr;
gap: 28px;
align-items: start;
}
.kicker {
display: inline-flex;
gap: 10px;
align-items: center;
font-size: 12px;
letter-spacing: 0.12em;
text-transform: uppercase;
color: rgba(243, 244, 246, 0.58);
margin: 0 0 14px;
}
.kicker::before {
content: "";
width: 10px;
height: 10px;
border-radius: 3px;
background: linear-gradient(135deg, rgba(66, 133, 244, 0.9), rgba(52, 168, 83, 0.85));
box-shadow: 0 0 0 4px rgba(66, 133, 244, 0.08);
}
h1 {
font-family: var(--serif);
font-weight: 700;
letter-spacing: -0.03em;
line-height: 0.95;
margin: 0 0 14px;
font-size: clamp(44px, 5.5vw, 68px);
}
.hero__word {
display: block;
opacity: 0;
transform: translateY(10px);
animation: rise 700ms cubic-bezier(0.2, 1, 0.2, 1) forwards;
}
.hero__word:nth-child(1) {
animation-delay: 80ms;
}
.hero__word:nth-child(2) {
animation-delay: 160ms;
}
.hero__word:nth-child(3) {
animation-delay: 260ms;
}
.hero__word--mono {
font-family: var(--mono);
font-weight: 500;
letter-spacing: -0.04em;
color: rgba(243, 244, 246, 0.92);
}
@keyframes rise {
to {
opacity: 1;
transform: translateY(0);
}
}
.lede {
margin: 0 0 18px;
font-size: 16.5px;
color: var(--muted);
max-width: 52ch;
opacity: 0;
transform: translateY(10px);
animation: rise 700ms cubic-bezier(0.2, 1, 0.2, 1) 320ms forwards;
}
.lede strong {
color: var(--text);
font-weight: 600;
}
.pills {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin: 0 0 20px;
opacity: 0;
transform: translateY(10px);
animation: rise 700ms cubic-bezier(0.2, 1, 0.2, 1) 380ms forwards;
}
.pill {
font-size: 12px;
border-radius: 999px;
padding: 6px 10px;
border: 1px solid var(--stroke2);
background: rgba(17, 17, 26, 0.55);
color: rgba(243, 244, 246, 0.76);
}
.pill--b {
box-shadow: inset 0 0 0 1px rgba(66, 133, 244, 0.25);
}
.pill--r {
box-shadow: inset 0 0 0 1px rgba(234, 67, 53, 0.22);
}
.pill--y {
box-shadow: inset 0 0 0 1px rgba(251, 188, 5, 0.22);
}
.pill--g {
box-shadow: inset 0 0 0 1px rgba(52, 168, 83, 0.22);
}
.hero__actions {
display: flex;
gap: 12px;
margin: 0 0 12px;
opacity: 0;
transform: translateY(10px);
animation: rise 700ms cubic-bezier(0.2, 1, 0.2, 1) 440ms forwards;
}
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
padding: 10px 14px;
border-radius: 999px;
border: 1px solid rgba(255, 255, 255, 0.08);
text-decoration: none !important;
font-weight: 600;
font-size: 14px;
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.22);
}
.btn--primary {
background: linear-gradient(135deg, rgba(66, 133, 244, 0.92), rgba(52, 168, 83, 0.86));
color: #091018;
border-color: rgba(255, 255, 255, 0.12);
box-shadow: 0 18px 44px rgba(66, 133, 244, 0.18), 0 18px 44px rgba(52, 168, 83, 0.14);
}
.btn--ghost {
background: rgba(255, 255, 255, 0.06);
color: var(--text);
}
.btn:hover {
transform: translateY(-1px);
}
.note {
margin: 0;
color: rgba(243, 244, 246, 0.56);
font-size: 13px;
opacity: 0;
transform: translateY(10px);
animation: rise 700ms cubic-bezier(0.2, 1, 0.2, 1) 520ms forwards;
}
.note code {
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.07);
padding: 2px 6px;
border-radius: 8px;
color: rgba(243, 244, 246, 0.84);
}
.hero__panel {
display: grid;
gap: 14px;
opacity: 0;
transform: translateY(10px);
animation: rise 700ms cubic-bezier(0.2, 1, 0.2, 1) 260ms forwards;
}
.card {
border: 1px solid var(--stroke);
background: var(--card);
border-radius: var(--radius2);
box-shadow: var(--shadow);
overflow: hidden;
}
.term__bar {
display: flex;
align-items: center;
gap: 12px;
padding: 12px 14px;
background: rgba(12, 12, 18, 0.58);
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.dots {
display: inline-flex;
gap: 6px;
}
.dot {
width: 11px;
height: 11px;
border-radius: 999px;
}
.dot--r {
background: #ff5f57;
}
.dot--y {
background: #febc2e;
}
.dot--g {
background: #28c840;
}
.term__title {
margin-left: auto;
margin-right: auto;
font-family: var(--mono);
font-size: 12px;
color: rgba(243, 244, 246, 0.55);
}
.term__body {
padding: 14px 14px 16px;
background: rgba(11, 11, 17, 0.6);
}
.term__pre {
margin: 0;
font-family: var(--mono);
font-size: 12.5px;
color: rgba(243, 244, 246, 0.86);
line-height: 1.6;
white-space: pre-wrap;
}
.term__pre code {
display: block;
}
.meta {
padding: 14px 14px;
background: var(--card2);
border: 1px solid rgba(255, 255, 255, 0.06);
box-shadow: var(--shadow2);
}
.meta__item {
display: grid;
grid-template-columns: 90px 1fr;
gap: 12px;
padding: 10px 0;
}
.meta__item + .meta__item {
border-top: 1px solid rgba(255, 255, 255, 0.06);
}
.meta__k {
color: rgba(243, 244, 246, 0.55);
font-size: 12px;
letter-spacing: 0.06em;
text-transform: uppercase;
}
.meta__v {
color: rgba(243, 244, 246, 0.86);
font-size: 13px;
}
.meta__v code {
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.07);
padding: 2px 6px;
border-radius: 8px;
color: rgba(243, 244, 246, 0.9);
}

View File

@ -1,34 +0,0 @@
(() => {
const el = document.getElementById("demo");
if (!el) return;
const original = el.textContent || "";
const prefersReduced = window.matchMedia?.("(prefers-reduced-motion: reduce)")?.matches;
if (prefersReduced) return;
el.textContent = "";
const lines = original.split("\n");
const chunkDelay = 16;
const lineDelay = 140;
let i = 0;
let j = 0;
const tick = () => {
if (i >= lines.length) return;
const line = lines[i];
if (j <= line.length) {
el.textContent += line.slice(j, j + 1);
j += 1;
window.setTimeout(tick, chunkDelay);
return;
}
el.textContent += "\n";
i += 1;
j = 0;
window.setTimeout(tick, lineDelay);
};
window.setTimeout(tick, 260);
})();

View File

@ -1,239 +0,0 @@
.section {
padding: 52px 0;
}
.section__grid {
display: grid;
grid-template-columns: 0.36fr 0.64fr;
gap: 28px;
align-items: start;
}
h2 {
font-family: var(--serif);
font-weight: 700;
letter-spacing: -0.02em;
margin: 0 0 6px;
font-size: 28px;
}
h3 {
margin: 0 0 8px;
font-size: 16px;
font-weight: 700;
}
.muted {
margin: 0;
color: var(--muted);
}
.cols {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px;
}
.block {
padding: 16px 16px;
}
.code {
margin: 0;
padding: 12px 12px;
border-radius: 14px;
background: rgba(0, 0, 0, 0.22);
border: 1px solid rgba(255, 255, 255, 0.08);
overflow: auto;
}
.code code {
font-family: var(--mono);
font-size: 12.5px;
color: rgba(243, 244, 246, 0.88);
}
.steps {
display: grid;
gap: 14px;
}
.step {
display: grid;
grid-template-columns: 46px 1fr;
gap: 14px;
padding: 16px;
border-radius: var(--radius2);
border: 1px solid rgba(255, 255, 255, 0.08);
background: rgba(12, 12, 18, 0.46);
box-shadow: var(--shadow2);
}
.step__n {
width: 40px;
height: 40px;
border-radius: 14px;
display: grid;
place-items: center;
font-family: var(--mono);
font-weight: 500;
color: rgba(243, 244, 246, 0.92);
background: linear-gradient(135deg, rgba(66, 133, 244, 0.22), rgba(52, 168, 83, 0.18));
border: 1px solid rgba(255, 255, 255, 0.08);
}
.step p {
margin: 0 0 10px;
color: var(--muted);
}
.callout {
margin-top: 14px;
display: grid;
grid-template-columns: 44px 1fr;
gap: 14px;
padding: 16px;
border-radius: var(--radius2);
border: 1px solid rgba(255, 255, 255, 0.08);
background: linear-gradient(135deg, rgba(66, 133, 244, 0.14), rgba(234, 67, 53, 0.08));
box-shadow: var(--shadow2);
}
.callout__icon {
width: 44px;
height: 44px;
border-radius: 16px;
background: rgba(0, 0, 0, 0.18);
border: 1px solid rgba(255, 255, 255, 0.1);
box-shadow: inset 0 0 0 1px rgba(66, 133, 244, 0.18);
}
.callout__body p {
margin: 0 0 10px;
color: var(--muted);
}
.callout__body code {
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.07);
padding: 2px 6px;
border-radius: 8px;
color: rgba(243, 244, 246, 0.92);
}
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 14px;
}
.feat {
padding: 16px;
background: rgba(12, 12, 18, 0.46);
box-shadow: var(--shadow2);
}
.feat p {
margin: 0;
color: var(--muted);
}
.footerline {
display: flex;
gap: 12px;
margin-top: 18px;
}
.sitefoot {
padding: 36px 0 26px;
border-top: 1px solid rgba(255, 255, 255, 0.08);
background: rgba(7, 7, 11, 0.35);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
}
.sitefoot__row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 14px;
}
.sitefoot__brand {
display: inline-flex;
align-items: center;
gap: 10px;
font-family: var(--mono);
}
.sitefoot__small {
margin-top: 8px;
color: rgba(243, 244, 246, 0.6);
font-size: 13px;
}
.sitefoot__small a {
color: rgba(243, 244, 246, 0.75);
}
.sep {
margin: 0 8px;
color: rgba(243, 244, 246, 0.28);
}
.sitefoot__right {
display: flex;
gap: 14px;
color: rgba(243, 244, 246, 0.7);
font-size: 14px;
}
.sitefoot__fineprint {
margin-top: 18px;
color: rgba(243, 244, 246, 0.46);
font-size: 12px;
}
@media (max-width: 980px) {
.hero__grid {
grid-template-columns: 1fr;
}
.section__grid {
grid-template-columns: 1fr;
}
.grid {
grid-template-columns: 1fr 1fr;
}
}
@media (max-width: 640px) {
.wrap {
width: min(1100px, calc(100% - 28px));
}
.nav {
display: none;
}
.cols {
grid-template-columns: 1fr;
}
.grid {
grid-template-columns: 1fr;
}
.footerline {
flex-direction: column;
align-items: flex-start;
}
.sitefoot__row {
flex-direction: column;
align-items: flex-start;
}
}
@media (prefers-reduced-motion: reduce) {
* {
animation: none !important;
transition: none !important;
scroll-behavior: auto !important;
}
}

345
docs/backup.md Normal file
View File

@ -0,0 +1,345 @@
---
summary: "Encrypted Google account backups"
read_when:
- Adding a new gog backup service adapter
- Changing encrypted backup layout, manifest fields, or age identity handling
- Debugging backup-gog push, status, or verify
---
# Encrypted Backups
`gog backup` writes Google account data into a Git repository as age-encrypted
JSONL gzip shards. The intended repository is private, for example
`https://github.com/steipete/backup-gog`, but service payloads are encrypted
before Git sees them.
## Commands
Initialize local config, create an age identity if needed, seed the backup repo,
and print the public recipient:
```bash
gog backup init \
--repo ~/Projects/backup-gog \
--remote https://github.com/steipete/backup-gog.git
```
Back up all supported services:
```bash
gog backup push --services all --account steipete@gmail.com
```
Back up only Gmail:
```bash
gog backup push --services gmail --account steipete@gmail.com
```
For a bounded smoke run:
```bash
gog backup push --services gmail --account steipete@gmail.com --query 'newer_than:7d' --max 25
```
Inspect cleartext manifest metadata:
```bash
gog backup status
```
Decrypt every shard and verify hashes and row counts:
```bash
gog backup verify
```
Decrypt one shard to stdout:
```bash
gog backup cat data/gmail/<account-hash>/labels.jsonl.gz.age --pretty
```
Write an unencrypted local copy for easy reading on the Mac:
```bash
gog backup export --out ~/Documents/gog-backup-export
gog backup export --no-pull --out ~/Library/CloudStorage/Dropbox/backup/gog --gmail-format markdown
```
Use `--no-push` on `init` or `push` to commit locally without pushing to the
remote.
Supported services:
- `gmail`: labels and raw MIME messages. Fetched raw messages are cached under
the local user cache by default so interrupted full-mailbox runs can resume
the expensive message download phase. Cached runs also write encrypted
incomplete checkpoint commits during long fetches; use `--no-gmail-cache`,
`--gmail-refresh-cache`, or `--no-gmail-checkpoints` to bypass those layers.
- `gmail-settings`: filters, forwarding addresses, auto-forwarding, send-as
aliases, vacation responder, delegate visibility, POP, IMAP, and language
settings.
- `calendar`: calendar list entries, ACL rules, Calendar settings/colors, and
all events, including deleted events.
- `contacts`: People API contacts, other contacts, and contact groups.
- `tasks`: task lists and tasks, including completed, deleted, hidden, and
assigned tasks.
- `drive`: shared drives, Drive file metadata, permissions, comments, revision
metadata, and downloaded/exported file content. Google Docs export as `.docx`
and Markdown, Sheets as `.xlsx`, Slides as `.pptx` and PDF, Drawings as PNG
and PDF, and binary files as metadata-only unless `--drive-binary-contents`
is set.
- `workspace`: Docs/Sheets/Slides inventory plus Forms and form responses
discovered through Drive. Add `--workspace-native` to fetch full native
Docs/Sheets/Slides API JSON.
- `appscript`: Apps Script projects and source content discovered through
Drive.
- `chat`: Chat spaces and messages, when the authenticated account/API allows
access.
- `classroom`: courses, topics, announcements, coursework, materials, and
submissions visible to the authenticated account.
- `groups`: Cloud Identity groups the account belongs to, plus member lists
when the API permits them.
- `admin`: Workspace Admin Directory users, groups, and group members. This is
Workspace-only and requires the existing Admin SDK/domain-wide delegation
setup.
- `keep`: Google Keep notes. This is Workspace-only and requires the existing
Keep service-account setup.
`all` expands to every supported service. Pushing a subset updates that subset
and preserves existing shards for services that were not selected, as long as
the age recipients are unchanged.
`gog backup push` enables `--drive-contents`, `--drive-collaboration`,
`--gmail-cache`, and `--best-effort` by default. Use `--no-drive-contents` for
metadata-only Drive runs, `--no-drive-collaboration` to skip per-file Drive
permissions/comments/revisions, or
`--drive-content-max-bytes <bytes>` to skip individual large Drive downloads.
`--drive-content-timeout` bounds each individual Drive export/download; timed
out files are represented as encrypted error rows so one stuck Google export
does not wedge the whole run.
Drive content exports Google-native files by default; set
`--drive-binary-contents` only when you intentionally want non-Google binary
file bytes in Git shards. Use `--workspace-native` only when you want the
heavier native API JSON in addition to readable Drive exports;
`--workspace-max-files` bounds that native fetch per file type for smoke tests.
Best-effort optional services record encrypted `errors` shards and let the rest
of the backup finish. The Gmail cache is only a local acceleration/resume cache;
encrypted backup shards remain the source of truth once a push completes.
## Files
Local config:
```text
~/.gog/backup.json
~/.gog/age.key
```
Backup repo:
```text
README.md
manifest.json
data/gmail/<account-hash>/labels.jsonl.gz.age
data/gmail/<account-hash>/messages/YYYY/MM/part-0001.jsonl.gz.age
data/calendar/<account-hash>/...
data/contacts/<account-hash>/...
data/drive/<account-hash>/...
data/groups/<account-hash>/...
data/admin/<account-hash>/...
data/keep/<account-hash>/...
data/tasks/<account-hash>/...
```
`manifest.json` is intentionally cleartext. It contains format version, export
time, public age recipients, service names, account hashes, shard paths, row
counts, encrypted byte sizes, and plaintext hashes used for verification. It
does not contain email subjects, senders, recipients, bodies, raw message IDs,
or labels.
Plaintext export directory:
```text
README.md
manifest.json
gmail/<account-hash>/labels.json
gmail/<account-hash>/messages/index.jsonl
gmail/<account-hash>/messages/YYYY/MM/<timestamp>-<message-id>.eml
gmail/<account-hash>/messages/YYYY/MM/<timestamp>-<subject>-<message-id>/message.md
gmail/<account-hash>/messages/YYYY/MM/<timestamp>-<subject>-<message-id>/attachments/<filename>
drive/<account-hash>/files/index.jsonl
drive/<account-hash>/files/<file-id>/<exported-file>
raw/<service>/...
```
`gog backup export` decrypts and verifies the manifest-backed shards before
writing files. Gmail messages become `.eml` files by default. Use
`--gmail-format markdown` for `message.md` files with YAML metadata and
extracted `attachments/` folders, or `--gmail-format both` to write Markdown and
`.eml` side by side. `--gmail-attachments none` keeps Markdown notes but skips
attachment files. Drive content shards become normal files plus an index. Other
services are written as verified JSONL under `raw/`. The export is not
encrypted; do not place it inside the backup Git repository, and keep it out of
synced/shared folders unless that is intentional.
Use `--no-pull` when exporting from a local backup repository that another
process is already updating.
## Encryption
Backups use the Go `filippo.io/age` library with X25519 age identities. There
is no backup password. The private identity is stored locally:
```text
~/.gog/age.key
```
The matching public recipient starts with `age1...` and is safe to store in
`~/.gog/backup.json` and `manifest.json`. The private `AGE-SECRET-KEY-...`
value must stay local or in a password manager.
For each shard, `gog backup push`:
1. Exports deterministic JSONL rows.
2. Gzip-compresses the JSONL with a fixed gzip timestamp.
3. Encrypts the compressed bytes with age for every configured recipient.
4. Writes only encrypted `*.jsonl.gz.age` files to Git.
5. Writes `manifest.json` with cleartext metadata for status and verification.
`gog backup verify` decrypts each shard with the local age identity, gunzips it,
checks the plaintext SHA-256 hash from the manifest, and verifies row counts.
`gog backup cat` and `gog backup export` use the same verification path before
returning plaintext.
## Security Boundary
The encrypted shards protect Google content from GitHub and anyone else without
the local age identity. That includes email bodies, subjects, senders,
recipients, raw MIME payloads, labels, Drive filenames, contacts, event titles,
and similar service data.
The manifest is not secret. It leaks operational metadata by design:
- Export time.
- Public age recipients.
- Service names.
- Account hashes.
- Shard paths and month buckets.
- Row counts.
- Encrypted byte sizes.
- Plaintext shard hashes used by `verify`.
- Backup cadence and which shards changed in Git history.
The account hash is not anonymity. It is useful to avoid putting the literal
email address in paths, but someone who can guess the address can compute and
compare the same hash.
Current trust model:
- Confidentiality: good for a private GitHub backup repo as long as
`~/.gog/age.key` stays private.
- Integrity against random corruption: `age` authentication, gzip decoding,
plaintext SHA-256, and row-count verification catch damaged shards.
- Integrity against repository writers: limited. Anyone with push access can
replace encrypted backup data with different data encrypted to the public
recipient. Keep repo write access restricted and review unexpected commits.
- Key compromise: if `AGE-SECRET-KEY-...` leaks, historical shards in Git
history may be readable. Rotate recipients, re-encrypt, and treat old Git
history as exposed unless it is rewritten and all copies are removed.
Future hardening ideas:
- Store only ciphertext hashes in the public manifest and move plaintext hashes
into encrypted shard metadata.
- Sign manifests or commits with a local signing key so `verify` can prove who
created the backup, not just that the files are internally consistent.
- Add optional shard padding or disable gzip for deployments that care more
about size side channels than repository size.
## Service Adapters
The Gmail adapter backs up:
- Gmail labels.
- Raw Gmail messages from `users.messages.get(format=raw)`.
Raw message payloads stay base64url encoded inside encrypted JSONL. This
preserves the RFC 2822 message content while keeping the shard format text
friendly.
By default, Gmail backup state is cached locally under the OS user cache
directory (`gogcli/backup/gmail/<account-hash>/`). Message-list page checkpoints
live under `list-v1/`, and fetched raw messages live under `raw-v1/`. Raw-message
cache files store the same row that will be encrypted into shards and are keyed
by a SHA-256 of the Gmail message ID, so rerunning after an interruption can
reuse already fetched messages. The encrypted message shards are streamed from
that cache in temporary per-shard files, so a full mailbox run does not retain
every raw message in RAM. Long Gmail runs report list, fetch, and shard-build
counters to stderr while stdout stays parseable. `--gmail-refresh-cache` forces
a refetch. The cache is plaintext local data; clear it if the machine should not
retain local mail copies outside the encrypted backup/export locations.
Cached Gmail runs also push incomplete encrypted checkpoint snapshots to the
backup Git repo. Checkpoint shards and manifests live under
`checkpoints/gmail/<account-hash>/<run-id>/`, are encrypted with the same age
recipients as normal backup shards, and are committed with messages like
`checkpoint: gmail backup 20000/359635`. The checkpoint manifest has
`"incomplete": true`; `gog backup status`, `verify`, `cat`, and `export` continue
to use the root `manifest.json` as the authoritative completed backup. This
keeps long runs crash-tolerant without pretending partial data is a finished
snapshot. A checkpoint commit can cover many messages, but its encrypted files
are split by both row count and a conservative plaintext byte ceiling so large
messages do not create GitHub-rejected blobs. Checkpoint commits push through a
single ordered background queue: `gog` records the exact commit SHA, continues
cached Gmail fetching, and pushes queued SHAs to the current branch one at a
time. Transient push failures are retried; GitHub hard rejections stop later
checkpoints because descendants would inherit the rejected object. The final
completed backup waits for the queue to drain, then promotes the completed
checkpoint message shards into the root manifest instead of re-encrypting the
same mailbox into a second multi-GB final push. If no complete matching
checkpoint exists, final Gmail message shards still split by row count and the
same conservative plaintext byte ceiling. Tune the commit cadence with
`--gmail-checkpoint-rows` /
`--gmail-checkpoint-interval` on `gog backup push`, or `--checkpoint-rows` /
`--checkpoint-interval` on `gog backup gmail push`; set the interval or rows to
`0` to disable that trigger, or use `--no-gmail-checkpoints` /
`--no-checkpoints` to disable checkpoint pushes entirely.
`--include-spam-trash` defaults to true. Use `--query` and `--max` for bounded
test exports; omit them for a full mailbox scan.
The Gmail settings adapter backs up account configuration through read-only
settings endpoints. Some settings, such as delegates, can be forbidden for
consumer accounts; those errors are kept inside the encrypted settings shard.
The Calendar adapter backs up calendar list entries, ACLs, settings, colors,
and all events from each calendar. The Contacts adapter backs up contacts, other
contacts, and contact groups. The Tasks adapter backs up task lists and tasks.
The Drive adapter backs up shared drives, file metadata, permissions, comments,
revision metadata, and Google-native file exports by default. Content rows store
base64 bytes inside encrypted JSONL so Git only sees ciphertext; plaintext
export decodes them back into regular files. Non-Google binary Drive bytes are
opt-in because personal Drives can easily contain tens of gigabytes.
The Workspace adapter discovers Google Docs, Sheets, Slides, and Forms via
Drive. Docs/Sheets/Slides are already recoverable through the Drive content
exports; `--workspace-native` adds heavier native API JSON for machine-readable
recovery. The Apps Script adapter discovers script projects through Drive and
stores project metadata plus source content. Chat and Classroom adapters
enumerate data visible to the authenticated account; personal/permission-limited
accounts may produce encrypted error shards under `--best-effort`.
## Adding Services
Keep one backup engine and add service adapters. A service adapter should:
1. Resolve the authenticated account through normal `gog` auth.
2. Export stable rows without writing Google data.
3. Store sensitive identifiers, titles, names, and content inside encrypted
shards only.
4. Add cleartext manifest counts and account hashes only.
5. Support bounded smoke flags when the service can be huge.
Good next adapters: Drive file content export, Docs/Sheets/Slides native
exports, Chat, Forms, Classroom, and Apps Script.

474
docs/commands.generated.md Normal file
View File

@ -0,0 +1,474 @@
# Command Reference
Generated from `gog schema --json`.
- [`gog <command> [flags]`](commands/gog.md) - Google CLI for Gmail/Calendar/Chat/Classroom/Drive/Contacts/Tasks/Sheets/Docs/Slides/People/Forms/App Script/Ads/Groups/Admin/Keep
- [`gog admin <command> [flags]`](commands/gog-admin.md) - Google Workspace Admin (Directory API) - requires domain-wide delegation
- [`gog admin groups <command>`](commands/gog-admin-groups.md) - Manage Workspace groups
- [`gog admin groups list (ls) [flags]`](commands/gog-admin-groups-list.md) - List groups in a domain
- [`gog admin groups members <command>`](commands/gog-admin-groups-members.md) - Manage group members
- [`gog admin groups members add (invite) <groupEmail> <memberEmail> [flags]`](commands/gog-admin-groups-members-add.md) - Add a member to a group
- [`gog admin groups members list (ls) <groupEmail> [flags]`](commands/gog-admin-groups-members-list.md) - List group members
- [`gog admin groups members remove (rm,del,delete) <groupEmail> <memberEmail>`](commands/gog-admin-groups-members-remove.md) - Remove a member from a group
- [`gog admin users <command>`](commands/gog-admin-users.md) - Manage Workspace users
- [`gog admin users create (add,new) <email> [flags]`](commands/gog-admin-users-create.md) - Create a new user
- [`gog admin users get (info,show) <userEmail>`](commands/gog-admin-users-get.md) - Get user details
- [`gog admin users list (ls) [flags]`](commands/gog-admin-users-list.md) - List users in a domain
- [`gog admin users suspend <userEmail>`](commands/gog-admin-users-suspend.md) - Suspend a user account
- [`gog agent <command> [flags]`](commands/gog-agent.md) - Agent-friendly helpers
- [`gog agent exit-codes (exitcodes,exit-code)`](commands/gog-agent-exit-codes.md) - Print stable exit codes for automation
- [`gog appscript (script,apps-script) <command> [flags]`](commands/gog-appscript.md) - Google Apps Script
- [`gog appscript (script,apps-script) content (cat) <scriptId>`](commands/gog-appscript-content.md) - Get Apps Script project content
- [`gog appscript (script,apps-script) create (new) --title=STRING [flags]`](commands/gog-appscript-create.md) - Create an Apps Script project
- [`gog appscript (script,apps-script) get (info,show) <scriptId>`](commands/gog-appscript-get.md) - Get Apps Script project metadata
- [`gog appscript (script,apps-script) run <scriptId> <function> [flags]`](commands/gog-appscript-run.md) - Run a deployed Apps Script function
- [`gog auth <command> [flags]`](commands/gog-auth.md) - Auth and credentials
- [`gog auth add <email> [flags]`](commands/gog-auth-add.md) - Authorize and store a refresh token
- [`gog auth alias <command>`](commands/gog-auth-alias.md) - Manage account aliases
- [`gog auth alias list`](commands/gog-auth-alias-list.md) - List account aliases
- [`gog auth alias set <alias> <email>`](commands/gog-auth-alias-set.md) - Set an account alias
- [`gog auth alias unset <alias>`](commands/gog-auth-alias-unset.md) - Remove an account alias
- [`gog auth credentials <command>`](commands/gog-auth-credentials.md) - Manage OAuth client credentials
- [`gog auth credentials list`](commands/gog-auth-credentials-list.md) - List stored OAuth client credentials
- [`gog auth credentials remove [<client>]`](commands/gog-auth-credentials-remove.md) - Remove stored OAuth client credentials
- [`gog auth credentials set <credentials> [flags]`](commands/gog-auth-credentials-set.md) - Store OAuth client credentials
- [`gog auth doctor [flags]`](commands/gog-auth-doctor.md) - Diagnose auth, keyring, and refresh-token issues
- [`gog auth keep --key=STRING <email>`](commands/gog-auth-keep.md) - Configure service account for Google Keep (Workspace only)
- [`gog auth keyring [<backend> [<backend2>]]`](commands/gog-auth-keyring.md) - Configure keyring backend
- [`gog auth list [flags]`](commands/gog-auth-list.md) - List stored accounts
- [`gog auth manage (login) [flags]`](commands/gog-auth-manage.md) - Open accounts manager in browser
- [`gog auth remove <email>`](commands/gog-auth-remove.md) - Remove a stored refresh token
- [`gog auth service-account <command>`](commands/gog-auth-service-account.md) - Configure service account (Workspace only; domain-wide delegation)
- [`gog auth service-account set --key=STRING <email>`](commands/gog-auth-service-account-set.md) - Store a service account key for impersonation
- [`gog auth service-account status <email>`](commands/gog-auth-service-account-status.md) - Show stored service account key status
- [`gog auth service-account unset <email>`](commands/gog-auth-service-account-unset.md) - Remove stored service account key
- [`gog auth services [flags]`](commands/gog-auth-services.md) - List supported auth services and scopes
- [`gog auth status`](commands/gog-auth-status.md) - Show auth configuration and keyring backend
- [`gog auth tokens <command>`](commands/gog-auth-tokens.md) - Manage stored refresh tokens
- [`gog auth tokens delete <email>`](commands/gog-auth-tokens-delete.md) - Delete a stored refresh token
- [`gog auth tokens export <email> [flags]`](commands/gog-auth-tokens-export.md) - Export a refresh token to a file (contains secrets)
- [`gog auth tokens import <inPath>`](commands/gog-auth-tokens-import.md) - Import a refresh token file into keyring (contains secrets)
- [`gog auth tokens list`](commands/gog-auth-tokens-list.md) - List stored tokens (by key only)
- [`gog backup <command> [flags]`](commands/gog-backup.md) - Encrypted Google account backups
- [`gog backup cat <shard> [flags]`](commands/gog-backup-cat.md) - Decrypt one backup shard to stdout
- [`gog backup export [flags]`](commands/gog-backup-export.md) - Write a local plaintext export
- [`gog backup gmail <command>`](commands/gog-backup-gmail.md) - Gmail backup operations
- [`gog backup gmail push [flags]`](commands/gog-backup-gmail-push.md) - Export Gmail into encrypted backup shards
- [`gog backup init [flags]`](commands/gog-backup-init.md) - Initialize encrypted backup config and repository
- [`gog backup push [flags]`](commands/gog-backup-push.md) - Export services into encrypted backup shards
- [`gog backup status [flags]`](commands/gog-backup-status.md) - Inspect backup manifest without decrypting shards
- [`gog backup verify [flags]`](commands/gog-backup-verify.md) - Decrypt and verify all backup shards
- [`gog calendar (cal) <command> [flags]`](commands/gog-calendar.md) - Google Calendar
- [`gog calendar (cal) acl (permissions,perms) <calendarId> [flags]`](commands/gog-calendar-acl.md) - List calendar ACL
- [`gog calendar (cal) alias <command>`](commands/gog-calendar-alias.md) - Manage calendar aliases
- [`gog calendar (cal) alias list`](commands/gog-calendar-alias-list.md) - List calendar aliases
- [`gog calendar (cal) alias set <alias> <calendarId>`](commands/gog-calendar-alias-set.md) - Set a calendar alias
- [`gog calendar (cal) alias unset <alias>`](commands/gog-calendar-alias-unset.md) - Remove a calendar alias
- [`gog calendar (cal) calendars [flags]`](commands/gog-calendar-calendars.md) - List calendars
- [`gog calendar (cal) colors`](commands/gog-calendar-colors.md) - Show calendar colors
- [`gog calendar (cal) conflicts [flags]`](commands/gog-calendar-conflicts.md) - Find conflicts
- [`gog calendar (cal) create (add,new) <calendarId> [flags]`](commands/gog-calendar-create.md) - Create an event
- [`gog calendar (cal) create-calendar (new-calendar) <summary> [flags]`](commands/gog-calendar-create-calendar.md) - Create a new secondary calendar
- [`gog calendar (cal) delete (rm,del,remove) <calendarId> <eventId> [flags]`](commands/gog-calendar-delete.md) - Delete an event
- [`gog calendar (cal) event (get,info,show) <calendarId> <eventId>`](commands/gog-calendar-event.md) - Get event
- [`gog calendar (cal) events (list,ls) [<calendarId> ...] [flags]`](commands/gog-calendar-events.md) - List events from a calendar or all calendars
- [`gog calendar (cal) focus-time (focus) --from=STRING --to=STRING [<calendarId>] [flags]`](commands/gog-calendar-focus-time.md) - Create a Focus Time block
- [`gog calendar (cal) freebusy [<calendarIds>] [flags]`](commands/gog-calendar-freebusy.md) - Get free/busy
- [`gog calendar (cal) move (transfer) <calendarId> <eventId> <destinationCalendarId> [flags]`](commands/gog-calendar-move.md) - Move an event to another calendar
- [`gog calendar (cal) out-of-office (ooo) --from=STRING --to=STRING [<calendarId>] [flags]`](commands/gog-calendar-out-of-office.md) - Create an Out of Office event
- [`gog calendar (cal) propose-time <calendarId> <eventId> [flags]`](commands/gog-calendar-propose-time.md) - Generate URL to propose a new meeting time (browser-only feature)
- [`gog calendar (cal) raw <calendarId> <eventId> [flags]`](commands/gog-calendar-raw.md) - Dump raw Google Calendar API response as JSON (Events.Get; lossless; for scripting and LLM consumption)
- [`gog calendar (cal) respond (rsvp,reply) <calendarId> <eventId> [flags]`](commands/gog-calendar-respond.md) - Respond to an event invitation
- [`gog calendar (cal) search (find,query) <query> [flags]`](commands/gog-calendar-search.md) - Search events
- [`gog calendar (cal) subscribe (sub,add-calendar) <calendarId> [flags]`](commands/gog-calendar-subscribe.md) - Add a calendar to your calendar list
- [`gog calendar (cal) team <group-email> [flags]`](commands/gog-calendar-team.md) - Show events for all members of a Google Group
- [`gog calendar (cal) time [flags]`](commands/gog-calendar-time.md) - Show server time
- [`gog calendar (cal) update (edit,set) <calendarId> <eventId> [flags]`](commands/gog-calendar-update.md) - Update an event
- [`gog calendar (cal) users [flags]`](commands/gog-calendar-users.md) - List workspace users (use their email as calendar ID)
- [`gog calendar (cal) working-location (wl) --from=STRING --to=STRING --type=STRING [<calendarId>] [flags]`](commands/gog-calendar-working-location.md) - Set working location (home/office/custom)
- [`gog chat <command> [flags]`](commands/gog-chat.md) - Google Chat
- [`gog chat dm <command>`](commands/gog-chat-dm.md) - Direct messages
- [`gog chat dm send (create,post) <email> [flags]`](commands/gog-chat-dm-send.md) - Send a direct message
- [`gog chat dm space (find,setup) <email>`](commands/gog-chat-dm-space.md) - Find or create a DM space
- [`gog chat messages <command>`](commands/gog-chat-messages.md) - Chat messages
- [`gog chat messages list (ls) <space> [flags]`](commands/gog-chat-messages-list.md) - List messages
- [`gog chat messages react <message> <emoji> [flags]`](commands/gog-chat-messages-react.md) - Add an emoji reaction to a message
- [`gog chat messages reactions (reaction) <command>`](commands/gog-chat-messages-reactions.md) - Manage emoji reactions on a message
- [`gog chat messages reactions (reaction) create (add) <message> <emoji> [flags]`](commands/gog-chat-messages-reactions-create.md) - Add an emoji reaction to a message
- [`gog chat messages reactions (reaction) delete (remove,rm) <reaction>`](commands/gog-chat-messages-reactions-delete.md) - Delete a reaction
- [`gog chat messages reactions (reaction) list (ls) <message> [flags]`](commands/gog-chat-messages-reactions-list.md) - List reactions on a message
- [`gog chat messages send (create,post) <space> [flags]`](commands/gog-chat-messages-send.md) - Send a message
- [`gog chat spaces <command>`](commands/gog-chat-spaces.md) - Chat spaces
- [`gog chat spaces create (add,new) <displayName> [flags]`](commands/gog-chat-spaces-create.md) - Create a space
- [`gog chat spaces find (search,query) <displayName> [flags]`](commands/gog-chat-spaces-find.md) - Find spaces by display name
- [`gog chat spaces list (ls) [flags]`](commands/gog-chat-spaces-list.md) - List spaces
- [`gog chat threads <command>`](commands/gog-chat-threads.md) - Chat threads
- [`gog chat threads list <space> [flags]`](commands/gog-chat-threads-list.md) - List threads in a space
- [`gog classroom (class) <command> [flags]`](commands/gog-classroom.md) - Google Classroom
- [`gog classroom (class) announcements (announcement,ann) <command>`](commands/gog-classroom-announcements.md) - Announcements
- [`gog classroom (class) announcements (announcement,ann) assignees (assign) <courseId> <announcementId> [flags]`](commands/gog-classroom-announcements-assignees.md) - Modify announcement assignees
- [`gog classroom (class) announcements (announcement,ann) create (add,new) --text=STRING <courseId> [flags]`](commands/gog-classroom-announcements-create.md) - Create an announcement
- [`gog classroom (class) announcements (announcement,ann) delete (rm,del,remove) <courseId> <announcementId>`](commands/gog-classroom-announcements-delete.md) - Delete an announcement
- [`gog classroom (class) announcements (announcement,ann) get (info,show) <courseId> <announcementId>`](commands/gog-classroom-announcements-get.md) - Get an announcement
- [`gog classroom (class) announcements (announcement,ann) list (ls) <courseId> [flags]`](commands/gog-classroom-announcements-list.md) - List announcements
- [`gog classroom (class) announcements (announcement,ann) update (edit,set) <courseId> <announcementId> [flags]`](commands/gog-classroom-announcements-update.md) - Update an announcement
- [`gog classroom (class) courses (course) <command>`](commands/gog-classroom-courses.md) - Courses
- [`gog classroom (class) courses (course) archive (arch) <courseId>`](commands/gog-classroom-courses-archive.md) - Archive a course
- [`gog classroom (class) courses (course) create (add,new) --name=STRING [flags]`](commands/gog-classroom-courses-create.md) - Create a course
- [`gog classroom (class) courses (course) delete (rm,del,remove) <courseId>`](commands/gog-classroom-courses-delete.md) - Delete a course
- [`gog classroom (class) courses (course) get (info,show) <courseId>`](commands/gog-classroom-courses-get.md) - Get a course
- [`gog classroom (class) courses (course) join (enroll) <courseId> [flags]`](commands/gog-classroom-courses-join.md) - Join a course
- [`gog classroom (class) courses (course) leave (unenroll) <courseId> [flags]`](commands/gog-classroom-courses-leave.md) - Leave a course
- [`gog classroom (class) courses (course) list (ls) [flags]`](commands/gog-classroom-courses-list.md) - List courses
- [`gog classroom (class) courses (course) unarchive (unarch,restore) <courseId>`](commands/gog-classroom-courses-unarchive.md) - Unarchive a course
- [`gog classroom (class) courses (course) update (edit,set) <courseId> [flags]`](commands/gog-classroom-courses-update.md) - Update a course
- [`gog classroom (class) courses (course) url (link) <courseId> ...`](commands/gog-classroom-courses-url.md) - Print Classroom web URLs for courses
- [`gog classroom (class) coursework (work) <command>`](commands/gog-classroom-coursework.md) - Coursework
- [`gog classroom (class) coursework (work) assignees (assign) <courseId> <courseworkId> [flags]`](commands/gog-classroom-coursework-assignees.md) - Modify coursework assignees
- [`gog classroom (class) coursework (work) create (add,new) --title=STRING <courseId> [flags]`](commands/gog-classroom-coursework-create.md) - Create coursework
- [`gog classroom (class) coursework (work) delete (rm,del,remove) <courseId> <courseworkId>`](commands/gog-classroom-coursework-delete.md) - Delete coursework
- [`gog classroom (class) coursework (work) get (info,show) <courseId> <courseworkId>`](commands/gog-classroom-coursework-get.md) - Get coursework
- [`gog classroom (class) coursework (work) list (ls) <courseId> [flags]`](commands/gog-classroom-coursework-list.md) - List coursework
- [`gog classroom (class) coursework (work) update (edit,set) <courseId> <courseworkId> [flags]`](commands/gog-classroom-coursework-update.md) - Update coursework
- [`gog classroom (class) guardian-invitations (guardian-invites) <command>`](commands/gog-classroom-guardian-invitations.md) - Guardian invitations
- [`gog classroom (class) guardian-invitations (guardian-invites) create (add,new) --email=STRING <studentId>`](commands/gog-classroom-guardian-invitations-create.md) - Create a guardian invitation
- [`gog classroom (class) guardian-invitations (guardian-invites) get (info,show) <studentId> <invitationId>`](commands/gog-classroom-guardian-invitations-get.md) - Get a guardian invitation
- [`gog classroom (class) guardian-invitations (guardian-invites) list (ls) <studentId> [flags]`](commands/gog-classroom-guardian-invitations-list.md) - List guardian invitations
- [`gog classroom (class) guardians (guardian) <command>`](commands/gog-classroom-guardians.md) - Guardians
- [`gog classroom (class) guardians (guardian) delete (rm,del,remove) <studentId> <guardianId>`](commands/gog-classroom-guardians-delete.md) - Delete a guardian
- [`gog classroom (class) guardians (guardian) get (info,show) <studentId> <guardianId>`](commands/gog-classroom-guardians-get.md) - Get a guardian
- [`gog classroom (class) guardians (guardian) list (ls) <studentId> [flags]`](commands/gog-classroom-guardians-list.md) - List guardians
- [`gog classroom (class) invitations (invitation,invites) <command>`](commands/gog-classroom-invitations.md) - Invitations
- [`gog classroom (class) invitations (invitation,invites) accept (join) <invitationId>`](commands/gog-classroom-invitations-accept.md) - Accept an invitation
- [`gog classroom (class) invitations (invitation,invites) create (add,new) --role=STRING <courseId> <userId>`](commands/gog-classroom-invitations-create.md) - Create an invitation
- [`gog classroom (class) invitations (invitation,invites) delete (rm,del,remove) <invitationId>`](commands/gog-classroom-invitations-delete.md) - Delete an invitation
- [`gog classroom (class) invitations (invitation,invites) get (info,show) <invitationId>`](commands/gog-classroom-invitations-get.md) - Get an invitation
- [`gog classroom (class) invitations (invitation,invites) list (ls) [flags]`](commands/gog-classroom-invitations-list.md) - List invitations
- [`gog classroom (class) materials (material) <command>`](commands/gog-classroom-materials.md) - Coursework materials
- [`gog classroom (class) materials (material) create (add,new) --title=STRING <courseId> [flags]`](commands/gog-classroom-materials-create.md) - Create coursework material
- [`gog classroom (class) materials (material) delete (rm,del,remove) <courseId> <materialId>`](commands/gog-classroom-materials-delete.md) - Delete coursework material
- [`gog classroom (class) materials (material) get (info,show) <courseId> <materialId>`](commands/gog-classroom-materials-get.md) - Get coursework material
- [`gog classroom (class) materials (material) list (ls) <courseId> [flags]`](commands/gog-classroom-materials-list.md) - List coursework materials
- [`gog classroom (class) materials (material) update (edit,set) <courseId> <materialId> [flags]`](commands/gog-classroom-materials-update.md) - Update coursework material
- [`gog classroom (class) profile (me) <command>`](commands/gog-classroom-profile.md) - User profiles
- [`gog classroom (class) profile (me) get [<userId>]`](commands/gog-classroom-profile-get.md) - Get a user profile
- [`gog classroom (class) roster (members) <courseId> [flags]`](commands/gog-classroom-roster.md) - Course roster (students + teachers)
- [`gog classroom (class) students (student) <command>`](commands/gog-classroom-students.md) - Course students
- [`gog classroom (class) students (student) add (create,new) <courseId> <userId> [flags]`](commands/gog-classroom-students-add.md) - Add a student
- [`gog classroom (class) students (student) get (info,show) <courseId> <userId>`](commands/gog-classroom-students-get.md) - Get a student
- [`gog classroom (class) students (student) list (ls) <courseId> [flags]`](commands/gog-classroom-students-list.md) - List students
- [`gog classroom (class) students (student) remove (delete,rm,del,remove) <courseId> <userId>`](commands/gog-classroom-students-remove.md) - Remove a student
- [`gog classroom (class) submissions (submission) <command>`](commands/gog-classroom-submissions.md) - Student submissions
- [`gog classroom (class) submissions (submission) get (info,show) <courseId> <courseworkId> <submissionId>`](commands/gog-classroom-submissions-get.md) - Get a student submission
- [`gog classroom (class) submissions (submission) grade (set,edit) <courseId> <courseworkId> <submissionId> [flags]`](commands/gog-classroom-submissions-grade.md) - Set draft/assigned grades
- [`gog classroom (class) submissions (submission) list (ls) <courseId> <courseworkId> [flags]`](commands/gog-classroom-submissions-list.md) - List student submissions
- [`gog classroom (class) submissions (submission) reclaim (undo) <courseId> <courseworkId> <submissionId>`](commands/gog-classroom-submissions-reclaim.md) - Reclaim a submission
- [`gog classroom (class) submissions (submission) return (send) <courseId> <courseworkId> <submissionId>`](commands/gog-classroom-submissions-return.md) - Return a submission
- [`gog classroom (class) submissions (submission) turn-in (turnin) <courseId> <courseworkId> <submissionId>`](commands/gog-classroom-submissions-turn-in.md) - Turn in a submission
- [`gog classroom (class) teachers (teacher) <command>`](commands/gog-classroom-teachers.md) - Course teachers
- [`gog classroom (class) teachers (teacher) add (create,new) <courseId> <userId>`](commands/gog-classroom-teachers-add.md) - Add a teacher
- [`gog classroom (class) teachers (teacher) get (info,show) <courseId> <userId>`](commands/gog-classroom-teachers-get.md) - Get a teacher
- [`gog classroom (class) teachers (teacher) list (ls) <courseId> [flags]`](commands/gog-classroom-teachers-list.md) - List teachers
- [`gog classroom (class) teachers (teacher) remove (delete,rm,del,remove) <courseId> <userId>`](commands/gog-classroom-teachers-remove.md) - Remove a teacher
- [`gog classroom (class) topics (topic) <command>`](commands/gog-classroom-topics.md) - Topics
- [`gog classroom (class) topics (topic) create (add,new) --name=STRING <courseId>`](commands/gog-classroom-topics-create.md) - Create a topic
- [`gog classroom (class) topics (topic) delete (rm,del,remove) <courseId> <topicId>`](commands/gog-classroom-topics-delete.md) - Delete a topic
- [`gog classroom (class) topics (topic) get (info,show) <courseId> <topicId>`](commands/gog-classroom-topics-get.md) - Get a topic
- [`gog classroom (class) topics (topic) list (ls) <courseId> [flags]`](commands/gog-classroom-topics-list.md) - List topics
- [`gog classroom (class) topics (topic) update (edit,set) --name=STRING <courseId> <topicId>`](commands/gog-classroom-topics-update.md) - Update a topic
- [`gog completion <shell> [flags]`](commands/gog-completion.md) - Generate shell completion scripts
- [`gog config <command> [flags]`](commands/gog-config.md) - Manage configuration
- [`gog config get (show) <key>`](commands/gog-config-get.md) - Get a config value
- [`gog config keys (list-keys,names)`](commands/gog-config-keys.md) - List available config keys
- [`gog config list (ls,all)`](commands/gog-config-list.md) - List all config values
- [`gog config no-send (nosend) <command>`](commands/gog-config-no-send.md) - Manage per-account Gmail no-send guards
- [`gog config no-send (nosend) list (ls)`](commands/gog-config-no-send-list.md) - List accounts with no-send guards
- [`gog config no-send (nosend) remove (rm,del,delete,unset,disable) <account>`](commands/gog-config-no-send-remove.md) - Remove an account no-send guard
- [`gog config no-send (nosend) set (add,enable) <account>`](commands/gog-config-no-send-set.md) - Block Gmail send operations for an account
- [`gog config path (where)`](commands/gog-config-path.md) - Print config file path
- [`gog config set (add,update) <key> <value>`](commands/gog-config-set.md) - Set a config value
- [`gog config unset (rm,del,remove) <key>`](commands/gog-config-unset.md) - Unset a config value
- [`gog contacts (contact) <command> [flags]`](commands/gog-contacts.md) - Google Contacts
- [`gog contacts (contact) create (add,new) [flags]`](commands/gog-contacts-create.md) - Create a contact
- [`gog contacts (contact) dedupe [flags]`](commands/gog-contacts-dedupe.md) - Find likely duplicate contacts (preview only)
- [`gog contacts (contact) delete (rm,del,remove) <resourceName>`](commands/gog-contacts-delete.md) - Delete a contact
- [`gog contacts (contact) directory <command>`](commands/gog-contacts-directory.md) - Directory contacts
- [`gog contacts (contact) directory list [flags]`](commands/gog-contacts-directory-list.md) - List people from the Workspace directory
- [`gog contacts (contact) directory search <query> ... [flags]`](commands/gog-contacts-directory-search.md) - Search people in the Workspace directory
- [`gog contacts (contact) export [<selector>] [flags]`](commands/gog-contacts-export.md) - Export contacts as vCard (.vcf)
- [`gog contacts (contact) get (info,show) <resourceName>`](commands/gog-contacts-get.md) - Get a contact
- [`gog contacts (contact) list (ls) [flags]`](commands/gog-contacts-list.md) - List contacts
- [`gog contacts (contact) other <command>`](commands/gog-contacts-other.md) - Other contacts
- [`gog contacts (contact) other delete <resourceName>`](commands/gog-contacts-other-delete.md) - Delete an other contact
- [`gog contacts (contact) other list [flags]`](commands/gog-contacts-other-list.md) - List other contacts
- [`gog contacts (contact) other search <query> ... [flags]`](commands/gog-contacts-other-search.md) - Search other contacts
- [`gog contacts (contact) raw <identifier> [flags]`](commands/gog-contacts-raw.md) - Dump raw People API response as JSON (People.Get; lossless; for scripting and LLM consumption)
- [`gog contacts (contact) search <query> ... [flags]`](commands/gog-contacts-search.md) - Search contacts by name/email/phone
- [`gog contacts (contact) update (edit,set) <resourceName> [flags]`](commands/gog-contacts-update.md) - Update a contact
- [`gog docs (doc) <command> [flags]`](commands/gog-docs.md) - Google Docs (export via Drive)
- [`gog docs (doc) add-tab <docId> [flags]`](commands/gog-docs-add-tab.md) - Add a tab to a Google Doc
- [`gog docs (doc) cat (text,read) <docId> [flags]`](commands/gog-docs-cat.md) - Print a Google Doc as plain text
- [`gog docs (doc) clear <docId>`](commands/gog-docs-clear.md) - Clear all content from a Google Doc
- [`gog docs (doc) comments <command>`](commands/gog-docs-comments.md) - Manage comments on files
- [`gog docs (doc) comments add (create,new) <docId> <content> [flags]`](commands/gog-docs-comments-add.md) - Add a comment to a Google Doc
- [`gog docs (doc) comments delete (rm,del,remove) <docId> <commentId>`](commands/gog-docs-comments-delete.md) - Delete a comment
- [`gog docs (doc) comments get (info,show) <docId> <commentId>`](commands/gog-docs-comments-get.md) - Get a comment by ID
- [`gog docs (doc) comments list (ls) <docId> [flags]`](commands/gog-docs-comments-list.md) - List comments on a Google Doc
- [`gog docs (doc) comments reply (respond) <docId> <commentId> <content>`](commands/gog-docs-comments-reply.md) - Reply to a comment
- [`gog docs (doc) comments resolve <docId> <commentId> [flags]`](commands/gog-docs-comments-resolve.md) - Resolve a comment (mark as done)
- [`gog docs (doc) copy (cp,duplicate) <docId> <title> [flags]`](commands/gog-docs-copy.md) - Copy a Google Doc
- [`gog docs (doc) create (add,new) <title> [flags]`](commands/gog-docs-create.md) - Create a Google Doc
- [`gog docs (doc) delete --start=INT-64 --end=INT-64 <docId> [flags]`](commands/gog-docs-delete.md) - Delete text range from document
- [`gog docs (doc) delete-tab <docId> [flags]`](commands/gog-docs-delete-tab.md) - Delete a tab from a Google Doc
- [`gog docs (doc) edit <docId> <find> <replace> [flags]`](commands/gog-docs-edit.md) - Find and replace text in a Google Doc
- [`gog docs (doc) export (download,dl) <docId> [flags]`](commands/gog-docs-export.md) - Export a Google Doc (pdf|docx|txt|md|html)
- [`gog docs (doc) find-replace <docId> <find> [<replace>] [flags]`](commands/gog-docs-find-replace.md) - Find and replace text. Supports plain text or markdown with images; use --first for a single occurrence.
- [`gog docs (doc) format <docId> [flags]`](commands/gog-docs-format.md) - Apply text or paragraph formatting to a Google Doc
- [`gog docs (doc) info (get,show) <docId>`](commands/gog-docs-info.md) - Get Google Doc metadata
- [`gog docs (doc) insert <docId> [<content>] [flags]`](commands/gog-docs-insert.md) - Insert text at a specific position
- [`gog docs (doc) list-tabs <docId>`](commands/gog-docs-list-tabs.md) - List all tabs in a Google Doc
- [`gog docs (doc) raw <docId> [flags]`](commands/gog-docs-raw.md) - Dump raw Google Docs API response as JSON (Documents.Get; lossless; for scripting and LLM consumption)
- [`gog docs (doc) rename-tab <docId> [flags]`](commands/gog-docs-rename-tab.md) - Rename a tab in a Google Doc
- [`gog docs (doc) sed <docId> [<expression>] [flags]`](commands/gog-docs-sed.md) - Regex find/replace (sed-style: s/pattern/replacement/g)
- [`gog docs (doc) structure (struct) <docId> [flags]`](commands/gog-docs-structure.md) - Show document structure with numbered paragraphs
- [`gog docs (doc) update <docId> [flags]`](commands/gog-docs-update.md) - Insert text at a specific index in a Google Doc
- [`gog docs (doc) write <docId> [flags]`](commands/gog-docs-write.md) - Write content to a Google Doc
- [`gog download (dl) <fileId> [flags]`](commands/gog-download.md) - Download a Drive file (alias for 'drive download')
- [`gog drive (drv) <command> [flags]`](commands/gog-drive.md) - Google Drive
- [`gog drive (drv) comments <command>`](commands/gog-drive-comments.md) - Manage comments on files
- [`gog drive (drv) comments create (add,new) <fileId> <content> [flags]`](commands/gog-drive-comments-create.md) - Create a comment on a file
- [`gog drive (drv) comments delete (rm,del,remove) <fileId> <commentId>`](commands/gog-drive-comments-delete.md) - Delete a comment
- [`gog drive (drv) comments get (info,show) <fileId> <commentId>`](commands/gog-drive-comments-get.md) - Get a comment by ID
- [`gog drive (drv) comments list (ls) <fileId> [flags]`](commands/gog-drive-comments-list.md) - List comments on a file
- [`gog drive (drv) comments reply (respond) <fileId> <commentId> <content>`](commands/gog-drive-comments-reply.md) - Reply to a comment
- [`gog drive (drv) comments update (edit,set) <fileId> <commentId> <content>`](commands/gog-drive-comments-update.md) - Update a comment
- [`gog drive (drv) copy <fileId> <name> [flags]`](commands/gog-drive-copy.md) - Copy a file
- [`gog drive (drv) delete (rm,del) <fileId> [flags]`](commands/gog-drive-delete.md) - Move a file to trash (use --permanent to delete forever)
- [`gog drive (drv) download <fileId> [flags]`](commands/gog-drive-download.md) - Download a file (exports Google Docs formats)
- [`gog drive (drv) drives [flags]`](commands/gog-drive-drives.md) - List shared drives (Team Drives)
- [`gog drive (drv) du [flags]`](commands/gog-drive-du.md) - Summarize Drive folder sizes
- [`gog drive (drv) get <fileId> [flags]`](commands/gog-drive-get.md) - Get file metadata
- [`gog drive (drv) inventory [flags]`](commands/gog-drive-inventory.md) - Export a read-only Drive inventory
- [`gog drive (drv) ls [flags]`](commands/gog-drive-ls.md) - List files in a folder (default: root)
- [`gog drive (drv) mkdir <name> [flags]`](commands/gog-drive-mkdir.md) - Create a folder
- [`gog drive (drv) move <fileId> [flags]`](commands/gog-drive-move.md) - Move a file to a different folder
- [`gog drive (drv) permissions <fileId> [flags]`](commands/gog-drive-permissions.md) - List permissions on a file
- [`gog drive (drv) raw <fileId> [flags]`](commands/gog-drive-raw.md) - Dump raw Google Drive API response as JSON (Files.Get; lossless; for scripting and LLM consumption)
- [`gog drive (drv) rename <fileId> <newName>`](commands/gog-drive-rename.md) - Rename a file or folder
- [`gog drive (drv) search <query> ... [flags]`](commands/gog-drive-search.md) - Full-text search across Drive
- [`gog drive (drv) share <fileId> [flags]`](commands/gog-drive-share.md) - Share a file or folder
- [`gog drive (drv) tree [flags]`](commands/gog-drive-tree.md) - Print a read-only folder tree
- [`gog drive (drv) unshare <fileId> <permissionId>`](commands/gog-drive-unshare.md) - Remove a permission from a file
- [`gog drive (drv) upload <localPath> [flags]`](commands/gog-drive-upload.md) - Upload a file
- [`gog drive (drv) url <fileId> ...`](commands/gog-drive-url.md) - Print web URLs for files
- [`gog exit-codes (exitcodes) [flags]`](commands/gog-exit-codes.md) - Print stable exit codes (alias for 'agent exit-codes')
- [`gog forms (form) <command> [flags]`](commands/gog-forms.md) - Google Forms
- [`gog forms (form) add-question (add-q,aq) --title=STRING <formId> [flags]`](commands/gog-forms-add-question.md) - Add a question to a form
- [`gog forms (form) create (new) --title=STRING [flags]`](commands/gog-forms-create.md) - Create a form
- [`gog forms (form) delete-question (delete-q,dq,rm-q) <formId> <index>`](commands/gog-forms-delete-question.md) - Delete a question by index
- [`gog forms (form) get (info,show) <formId>`](commands/gog-forms-get.md) - Get a form
- [`gog forms (form) move-question (move-q,mq) <formId> <oldIndex> <newIndex>`](commands/gog-forms-move-question.md) - Move a question to a new position
- [`gog forms (form) raw <formId> [flags]`](commands/gog-forms-raw.md) - Dump raw Google Forms API response as JSON (Forms.Get; lossless; for scripting and LLM consumption)
- [`gog forms (form) responses <command>`](commands/gog-forms-responses.md) - Form responses
- [`gog forms (form) responses get (info,show) <formId> <responseId>`](commands/gog-forms-responses-get.md) - Get a form response
- [`gog forms (form) responses list (ls) <formId> [flags]`](commands/gog-forms-responses-list.md) - List form responses
- [`gog forms (form) update (edit) <formId> [flags]`](commands/gog-forms-update.md) - Update form title, description, or settings
- [`gog forms (form) watch (watches) <command>`](commands/gog-forms-watch.md) - Response watches (push notifications)
- [`gog forms (form) watch (watches) create (new,add) --topic=STRING <formId> [flags]`](commands/gog-forms-watch-create.md) - Create a watch for new responses
- [`gog forms (form) watch (watches) delete (rm,remove) <formId> <watchId>`](commands/gog-forms-watch-delete.md) - Delete a watch
- [`gog forms (form) watch (watches) list (ls) <formId>`](commands/gog-forms-watch-list.md) - List active watches
- [`gog forms (form) watch (watches) renew (refresh) <formId> <watchId>`](commands/gog-forms-watch-renew.md) - Renew a watch (extends 7 days)
- [`gog gmail (mail,email) <command> [flags]`](commands/gog-gmail.md) - Gmail
- [`gog gmail (mail,email) archive [<messageId> ...] [flags]`](commands/gog-gmail-archive.md) - Archive messages (remove from inbox)
- [`gog gmail (mail,email) attachment <messageId> <attachmentId> [flags]`](commands/gog-gmail-attachment.md) - Download a single attachment
- [`gog gmail (mail,email) autoreply <query> ... [flags]`](commands/gog-gmail-autoreply.md) - Reply once to matching messages
- [`gog gmail (mail,email) batch <command>`](commands/gog-gmail-batch.md) - Batch operations (permanent delete requires broader Gmail scope; use gmail trash for normal trashing)
- [`gog gmail (mail,email) batch delete (rm,del,remove) <messageId> ...`](commands/gog-gmail-batch-delete.md) - Permanently delete multiple messages; use 'gmail trash' to move messages to trash with the default gmail.modify scope
- [`gog gmail (mail,email) batch modify (update,edit,set) <messageId> ... [flags]`](commands/gog-gmail-batch-modify.md) - Modify labels on multiple messages
- [`gog gmail (mail,email) drafts (draft) <command>`](commands/gog-gmail-drafts.md) - Draft operations
- [`gog gmail (mail,email) drafts (draft) create (add,new) [flags]`](commands/gog-gmail-drafts-create.md) - Create a draft
- [`gog gmail (mail,email) drafts (draft) delete (rm,del,remove) <draftId>`](commands/gog-gmail-drafts-delete.md) - Delete a draft
- [`gog gmail (mail,email) drafts (draft) get (info,show) <draftId> [flags]`](commands/gog-gmail-drafts-get.md) - Get draft details
- [`gog gmail (mail,email) drafts (draft) list (ls) [flags]`](commands/gog-gmail-drafts-list.md) - List drafts
- [`gog gmail (mail,email) drafts (draft) send (post) <draftId>`](commands/gog-gmail-drafts-send.md) - Send a draft
- [`gog gmail (mail,email) drafts (draft) update (edit,set) <draftId> [flags]`](commands/gog-gmail-drafts-update.md) - Update a draft
- [`gog gmail (mail,email) forward (fwd) --to=STRING <messageId> [flags]`](commands/gog-gmail-forward.md) - Forward a message to new recipients
- [`gog gmail (mail,email) get (info,show) <messageId> [flags]`](commands/gog-gmail-get.md) - Get a message (full|metadata|raw)
- [`gog gmail (mail,email) history [flags]`](commands/gog-gmail-history.md) - Gmail history
- [`gog gmail (mail,email) labels (label) <command>`](commands/gog-gmail-labels.md) - Label operations
- [`gog gmail (mail,email) labels (label) create (add,new) <name>`](commands/gog-gmail-labels-create.md) - Create a new label
- [`gog gmail (mail,email) labels (label) delete (rm,del) <labelIdOrName>`](commands/gog-gmail-labels-delete.md) - Delete a label
- [`gog gmail (mail,email) labels (label) get (info,show) <labelIdOrName>`](commands/gog-gmail-labels-get.md) - Get label details (including counts)
- [`gog gmail (mail,email) labels (label) list (ls)`](commands/gog-gmail-labels-list.md) - List labels
- [`gog gmail (mail,email) labels (label) modify (update,edit,set) <threadId> ... [flags]`](commands/gog-gmail-labels-modify.md) - Modify labels on threads
- [`gog gmail (mail,email) labels (label) rename (mv) <labelIdOrName> <newName>`](commands/gog-gmail-labels-rename.md) - Rename a label
- [`gog gmail (mail,email) labels (label) style (color,colour) <labelIdOrName> [flags]`](commands/gog-gmail-labels-style.md) - Change a user label color or visibility
- [`gog gmail (mail,email) mark-read (read-messages) [<messageId> ...] [flags]`](commands/gog-gmail-mark-read.md) - Mark messages as read
- [`gog gmail (mail,email) messages (message,msg,msgs) <command>`](commands/gog-gmail-messages.md) - Message operations
- [`gog gmail (mail,email) messages (message,msg,msgs) modify (update,edit,set) <messageId> [flags]`](commands/gog-gmail-messages-modify.md) - Modify labels on a single message
- [`gog gmail (mail,email) messages (message,msg,msgs) search (find,query,ls,list) <query> ... [flags]`](commands/gog-gmail-messages-search.md) - Search messages using Gmail query syntax
- [`gog gmail (mail,email) raw <messageId> [flags]`](commands/gog-gmail-raw.md) - Dump raw Gmail API response as JSON (Users.Messages.Get; lossless; for scripting and LLM consumption)
- [`gog gmail (mail,email) search (find,query,ls,list) <query> ... [flags]`](commands/gog-gmail-search.md) - Search threads using Gmail query syntax
- [`gog gmail (mail,email) send [flags]`](commands/gog-gmail-send.md) - Send an email
- [`gog gmail (mail,email) settings <command>`](commands/gog-gmail-settings.md) - Settings and admin
- [`gog gmail (mail,email) settings autoforward <command>`](commands/gog-gmail-settings-autoforward.md) - Auto-forwarding settings
- [`gog gmail (mail,email) settings autoforward get (info,show)`](commands/gog-gmail-settings-autoforward-get.md) - Get current auto-forwarding settings
- [`gog gmail (mail,email) settings autoforward update (edit,set) [flags]`](commands/gog-gmail-settings-autoforward-update.md) - Update auto-forwarding settings
- [`gog gmail (mail,email) settings delegates <command>`](commands/gog-gmail-settings-delegates.md) - Delegate operations
- [`gog gmail (mail,email) settings delegates add (create,new) <delegateEmail>`](commands/gog-gmail-settings-delegates-add.md) - Add a delegate
- [`gog gmail (mail,email) settings delegates get (info,show) <delegateEmail>`](commands/gog-gmail-settings-delegates-get.md) - Get a specific delegate's information
- [`gog gmail (mail,email) settings delegates list (ls)`](commands/gog-gmail-settings-delegates-list.md) - List all delegates
- [`gog gmail (mail,email) settings delegates remove (delete,rm,del) <delegateEmail>`](commands/gog-gmail-settings-delegates-remove.md) - Remove a delegate
- [`gog gmail (mail,email) settings filters <command>`](commands/gog-gmail-settings-filters.md) - Filter operations
- [`gog gmail (mail,email) settings filters create (add,new) [flags]`](commands/gog-gmail-settings-filters-create.md) - Create a new email filter
- [`gog gmail (mail,email) settings filters delete (rm,del,remove) <filterId>`](commands/gog-gmail-settings-filters-delete.md) - Delete a filter
- [`gog gmail (mail,email) settings filters export [flags]`](commands/gog-gmail-settings-filters-export.md) - Export filters as Gmail WebUI-compatible XML
- [`gog gmail (mail,email) settings filters get (info,show) <filterId>`](commands/gog-gmail-settings-filters-get.md) - Get a specific filter
- [`gog gmail (mail,email) settings filters list (ls)`](commands/gog-gmail-settings-filters-list.md) - List all email filters
- [`gog gmail (mail,email) settings forwarding <command>`](commands/gog-gmail-settings-forwarding.md) - Forwarding addresses
- [`gog gmail (mail,email) settings forwarding create (add,new) <forwardingEmail>`](commands/gog-gmail-settings-forwarding-create.md) - Create/add a forwarding address
- [`gog gmail (mail,email) settings forwarding delete (rm,del,remove) <forwardingEmail>`](commands/gog-gmail-settings-forwarding-delete.md) - Delete a forwarding address
- [`gog gmail (mail,email) settings forwarding get (info,show) <forwardingEmail>`](commands/gog-gmail-settings-forwarding-get.md) - Get a specific forwarding address
- [`gog gmail (mail,email) settings forwarding list (ls)`](commands/gog-gmail-settings-forwarding-list.md) - List all forwarding addresses
- [`gog gmail (mail,email) settings sendas <command>`](commands/gog-gmail-settings-sendas.md) - Send-as settings
- [`gog gmail (mail,email) settings sendas create (add,new) <email> [flags]`](commands/gog-gmail-settings-sendas-create.md) - Create a new send-as alias
- [`gog gmail (mail,email) settings sendas delete (rm,del,remove) <email>`](commands/gog-gmail-settings-sendas-delete.md) - Delete a send-as alias
- [`gog gmail (mail,email) settings sendas get (info,show) <email>`](commands/gog-gmail-settings-sendas-get.md) - Get details of a send-as alias
- [`gog gmail (mail,email) settings sendas list (ls)`](commands/gog-gmail-settings-sendas-list.md) - List send-as aliases
- [`gog gmail (mail,email) settings sendas update (edit,set) <email> [flags]`](commands/gog-gmail-settings-sendas-update.md) - Update a send-as alias
- [`gog gmail (mail,email) settings sendas verify (resend) <email>`](commands/gog-gmail-settings-sendas-verify.md) - Resend verification email for a send-as alias
- [`gog gmail (mail,email) settings vacation <command>`](commands/gog-gmail-settings-vacation.md) - Vacation responder
- [`gog gmail (mail,email) settings vacation get (info,show)`](commands/gog-gmail-settings-vacation-get.md) - Get current vacation responder settings
- [`gog gmail (mail,email) settings vacation update (edit,set) [flags]`](commands/gog-gmail-settings-vacation-update.md) - Update vacation responder settings
- [`gog gmail (mail,email) settings watch <command>`](commands/gog-gmail-settings-watch.md) - Manage Gmail watch
- [`gog gmail (mail,email) settings watch renew (update) [flags]`](commands/gog-gmail-settings-watch-renew.md) - Renew Gmail watch using stored config
- [`gog gmail (mail,email) settings watch serve [flags]`](commands/gog-gmail-settings-watch-serve.md) - Run Pub/Sub push handler
- [`gog gmail (mail,email) settings watch start (begin) [flags]`](commands/gog-gmail-settings-watch-start.md) - Start Gmail watch for Pub/Sub
- [`gog gmail (mail,email) settings watch status (ls) [flags]`](commands/gog-gmail-settings-watch-status.md) - Show stored watch state
- [`gog gmail (mail,email) settings watch stop (rm,delete)`](commands/gog-gmail-settings-watch-stop.md) - Stop Gmail watch and clear stored state
- [`gog gmail (mail,email) thread (threads,read) <command>`](commands/gog-gmail-thread.md) - Thread operations (get, modify)
- [`gog gmail (mail,email) thread (threads,read) attachments (files) <threadId> [flags]`](commands/gog-gmail-thread-attachments.md) - List all attachments in a thread
- [`gog gmail (mail,email) thread (threads,read) get (info,show) <threadId> [flags]`](commands/gog-gmail-thread-get.md) - Get a thread with all messages (optionally download attachments)
- [`gog gmail (mail,email) thread (threads,read) modify (update,edit,set) <threadId> [flags]`](commands/gog-gmail-thread-modify.md) - Modify labels on all messages in a thread
- [`gog gmail (mail,email) track <command>`](commands/gog-gmail-track.md) - Email open tracking
- [`gog gmail (mail,email) track key <command>`](commands/gog-gmail-track-key.md) - Manage tracking encryption keys
- [`gog gmail (mail,email) track key rotate [flags]`](commands/gog-gmail-track-key-rotate.md) - Rotate tracking encryption key
- [`gog gmail (mail,email) track opens [<tracking-id>] [flags]`](commands/gog-gmail-track-opens.md) - Query email opens
- [`gog gmail (mail,email) track setup [flags]`](commands/gog-gmail-track-setup.md) - Set up email tracking (deploy Cloudflare Worker)
- [`gog gmail (mail,email) track status`](commands/gog-gmail-track-status.md) - Show tracking configuration status
- [`gog gmail (mail,email) trash [<messageId> ...] [flags]`](commands/gog-gmail-trash.md) - Move messages to trash
- [`gog gmail (mail,email) unread (mark-unread) [<messageId> ...] [flags]`](commands/gog-gmail-unread.md) - Mark messages as unread
- [`gog gmail (mail,email) url <threadId> ...`](commands/gog-gmail-url.md) - Print Gmail web URLs for threads
- [`gog groups (group) <command> [flags]`](commands/gog-groups.md) - Google Groups
- [`gog groups (group) list (ls) [flags]`](commands/gog-groups-list.md) - List groups you belong to
- [`gog groups (group) members <groupEmail> [flags]`](commands/gog-groups-members.md) - List members of a group
- [`gog keep <command> [flags]`](commands/gog-keep.md) - Google Keep (Workspace only)
- [`gog keep attachment <attachmentName> [flags]`](commands/gog-keep-attachment.md) - Download an attachment
- [`gog keep create [flags]`](commands/gog-keep-create.md) - Create a new note
- [`gog keep delete <noteId> [flags]`](commands/gog-keep-delete.md) - Delete a note
- [`gog keep get <noteId> [flags]`](commands/gog-keep-get.md) - Get a note
- [`gog keep list [flags]`](commands/gog-keep-list.md) - List notes
- [`gog keep search <query> [flags]`](commands/gog-keep-search.md) - Search notes by text (client-side)
- [`gog login <email> [flags]`](commands/gog-login.md) - Authorize and store a refresh token (alias for 'auth add')
- [`gog logout <email> [flags]`](commands/gog-logout.md) - Remove a stored refresh token (alias for 'auth remove')
- [`gog ls (list) [flags]`](commands/gog-ls.md) - List Drive files (alias for 'drive ls')
- [`gog me [flags]`](commands/gog-me.md) - Show your profile (alias for 'people me')
- [`gog open (browse) <target> [flags]`](commands/gog-open.md) - Print a best-effort web URL for a Google URL/ID (offline)
- [`gog people (person) <command> [flags]`](commands/gog-people.md) - Google People
- [`gog people (person) get (info,show) <userId>`](commands/gog-people-get.md) - Get a user profile by ID
- [`gog people (person) me`](commands/gog-people-me.md) - Show your profile (people/me)
- [`gog people (person) raw <userId> [flags]`](commands/gog-people-raw.md) - Dump raw People API response as JSON (People.Get; lossless; for scripting and LLM consumption)
- [`gog people (person) relations [<userId>] [flags]`](commands/gog-people-relations.md) - Get user relations
- [`gog people (person) search (find,query) <query> ... [flags]`](commands/gog-people-search.md) - Search the Workspace directory
- [`gog schema (help-json,helpjson) [<command> ...] [flags]`](commands/gog-schema.md) - Machine-readable command/flag schema
- [`gog search (find) <query> ... [flags]`](commands/gog-search.md) - Search Drive files (alias for 'drive search')
- [`gog send [flags]`](commands/gog-send.md) - Send an email (alias for 'gmail send')
- [`gog sheets (sheet) <command> [flags]`](commands/gog-sheets.md) - Google Sheets
- [`gog sheets (sheet) add-tab (add-sheet) <spreadsheetId> <tabName> [flags]`](commands/gog-sheets-add-tab.md) - Add a new tab/sheet to a spreadsheet
- [`gog sheets (sheet) append (add) <spreadsheetId> <range> [<values> ...] [flags]`](commands/gog-sheets-append.md) - Append values to a range
- [`gog sheets (sheet) banding (banded-ranges) <command>`](commands/gog-sheets-banding.md) - Manage alternating color banding
- [`gog sheets (sheet) banding (banded-ranges) clear (delete,rm,remove) <spreadsheetId> [flags]`](commands/gog-sheets-banding-clear.md) - Remove alternating color banding
- [`gog sheets (sheet) banding (banded-ranges) list <spreadsheetId> [flags]`](commands/gog-sheets-banding-list.md) - List alternating color banded ranges
- [`gog sheets (sheet) banding (banded-ranges) set (add,create) <spreadsheetId> <range> [flags]`](commands/gog-sheets-banding-set.md) - Apply alternating colors to a range
- [`gog sheets (sheet) chart (charts) <command>`](commands/gog-sheets-chart.md) - Manage spreadsheet charts
- [`gog sheets (sheet) chart (charts) create (add,new) --spec-json=STRING <spreadsheetId> [flags]`](commands/gog-sheets-chart-create.md) - Create a chart from a JSON spec
- [`gog sheets (sheet) chart (charts) delete (rm,remove,del) <spreadsheetId> <chartId>`](commands/gog-sheets-chart-delete.md) - Delete a chart
- [`gog sheets (sheet) chart (charts) get (show,info) <spreadsheetId> <chartId>`](commands/gog-sheets-chart-get.md) - Get full chart definition (spec + position)
- [`gog sheets (sheet) chart (charts) list <spreadsheetId>`](commands/gog-sheets-chart-list.md) - List charts in a spreadsheet
- [`gog sheets (sheet) chart (charts) update (edit,set) --spec-json=STRING <spreadsheetId> <chartId>`](commands/gog-sheets-chart-update.md) - Update a chart spec
- [`gog sheets (sheet) clear <spreadsheetId> <range>`](commands/gog-sheets-clear.md) - Clear values in a range
- [`gog sheets (sheet) conditional-format (cf,conditional-formats) <command>`](commands/gog-sheets-conditional-format.md) - Manage conditional formatting rules
- [`gog sheets (sheet) conditional-format (cf,conditional-formats) add (create,new) --type=STRING --format-json=STRING <spreadsheetId> <range> [flags]`](commands/gog-sheets-conditional-format-add.md) - Add a conditional formatting rule
- [`gog sheets (sheet) conditional-format (cf,conditional-formats) clear (delete,rm,remove) --sheet=STRING <spreadsheetId> [flags]`](commands/gog-sheets-conditional-format-clear.md) - Remove conditional formatting rules
- [`gog sheets (sheet) conditional-format (cf,conditional-formats) list <spreadsheetId> [flags]`](commands/gog-sheets-conditional-format-list.md) - List conditional formatting rules
- [`gog sheets (sheet) copy (cp,duplicate) <spreadsheetId> <title> [flags]`](commands/gog-sheets-copy.md) - Copy a Google Sheet
- [`gog sheets (sheet) create (new) <title> [flags]`](commands/gog-sheets-create.md) - Create a new spreadsheet
- [`gog sheets (sheet) delete-tab (delete-sheet) <spreadsheetId> <tabName>`](commands/gog-sheets-delete-tab.md) - Delete a tab/sheet from a spreadsheet (use --force to skip confirmation)
- [`gog sheets (sheet) export (download,dl) <spreadsheetId> [flags]`](commands/gog-sheets-export.md) - Export a Google Sheet (pdf|xlsx|csv) via Drive
- [`gog sheets (sheet) find-replace <spreadsheetId> <find> <replace> [flags]`](commands/gog-sheets-find-replace.md) - Find and replace text across a spreadsheet
- [`gog sheets (sheet) format <spreadsheetId> <range> [flags]`](commands/gog-sheets-format.md) - Apply cell formatting to a range
- [`gog sheets (sheet) freeze <spreadsheetId> [flags]`](commands/gog-sheets-freeze.md) - Freeze rows and columns on a sheet
- [`gog sheets (sheet) get (read,show) <spreadsheetId> <range> [flags]`](commands/gog-sheets-get.md) - Get values from a range
- [`gog sheets (sheet) insert <spreadsheetId> <sheet> <dimension> <start> [flags]`](commands/gog-sheets-insert.md) - Insert empty rows or columns into a sheet
- [`gog sheets (sheet) links (hyperlinks) <spreadsheetId> <range>`](commands/gog-sheets-links.md) - Get cell hyperlinks from a range
- [`gog sheets (sheet) merge <spreadsheetId> <range> [flags]`](commands/gog-sheets-merge.md) - Merge cells in a range
- [`gog sheets (sheet) metadata (info) <spreadsheetId>`](commands/gog-sheets-metadata.md) - Get spreadsheet metadata
- [`gog sheets (sheet) named-ranges (namedranges,nr) <command>`](commands/gog-sheets-named-ranges.md) - Manage named ranges
- [`gog sheets (sheet) named-ranges (namedranges,nr) add (create,new) <spreadsheetId> <name> <range>`](commands/gog-sheets-named-ranges-add.md) - Add a named range
- [`gog sheets (sheet) named-ranges (namedranges,nr) delete (rm,remove,del) <spreadsheetId> <nameOrId>`](commands/gog-sheets-named-ranges-delete.md) - Delete a named range
- [`gog sheets (sheet) named-ranges (namedranges,nr) get (show,info) <spreadsheetId> <nameOrId>`](commands/gog-sheets-named-ranges-get.md) - Get a named range
- [`gog sheets (sheet) named-ranges (namedranges,nr) list <spreadsheetId>`](commands/gog-sheets-named-ranges-list.md) - List named ranges
- [`gog sheets (sheet) named-ranges (namedranges,nr) update (edit,set) <spreadsheetId> <nameOrId> [flags]`](commands/gog-sheets-named-ranges-update.md) - Update a named range
- [`gog sheets (sheet) notes <spreadsheetId> <range>`](commands/gog-sheets-notes.md) - Get cell notes from a range
- [`gog sheets (sheet) number-format <spreadsheetId> <range> [flags]`](commands/gog-sheets-number-format.md) - Apply number format to a range
- [`gog sheets (sheet) raw <spreadsheetId> [flags]`](commands/gog-sheets-raw.md) - Dump raw Google Sheets API response as JSON (Spreadsheets.Get; lossless; for scripting and LLM consumption)
- [`gog sheets (sheet) read-format (get-format,format-read) <spreadsheetId> <range> [flags]`](commands/gog-sheets-read-format.md) - Read cell formatting from a range
- [`gog sheets (sheet) rename-tab (rename-sheet) <spreadsheetId> <oldName> <newName>`](commands/gog-sheets-rename-tab.md) - Rename a tab/sheet in a spreadsheet
- [`gog sheets (sheet) resize-columns <spreadsheetId> <columns> [flags]`](commands/gog-sheets-resize-columns.md) - Resize sheet columns
- [`gog sheets (sheet) resize-rows <spreadsheetId> <rows> [flags]`](commands/gog-sheets-resize-rows.md) - Resize sheet rows
- [`gog sheets (sheet) table (tables) <command>`](commands/gog-sheets-table.md) - Manage Google Sheets tables
- [`gog sheets (sheet) table (tables) append (add-row,add-rows) <spreadsheetId> <tableId> [<values> ...] [flags]`](commands/gog-sheets-table-append.md) - Append rows to a table
- [`gog sheets (sheet) table (tables) clear (clear-rows) <spreadsheetId> <tableId>`](commands/gog-sheets-table-clear.md) - Clear table data rows
- [`gog sheets (sheet) table (tables) create (add,new) --name=STRING --columns-json=STRING <spreadsheetId> <range>`](commands/gog-sheets-table-create.md) - Create a table
- [`gog sheets (sheet) table (tables) delete (rm,remove,del) <spreadsheetId> <tableId>`](commands/gog-sheets-table-delete.md) - Delete a table
- [`gog sheets (sheet) table (tables) get (show,info) <spreadsheetId> <tableId>`](commands/gog-sheets-table-get.md) - Get a table
- [`gog sheets (sheet) table (tables) list <spreadsheetId>`](commands/gog-sheets-table-list.md) - List tables in a spreadsheet
- [`gog sheets (sheet) unmerge <spreadsheetId> <range>`](commands/gog-sheets-unmerge.md) - Unmerge cells in a range
- [`gog sheets (sheet) update (edit,set) <spreadsheetId> <range> [<values> ...] [flags]`](commands/gog-sheets-update.md) - Update values in a range
- [`gog sheets (sheet) update-note (set-note) <spreadsheetId> <range> [flags]`](commands/gog-sheets-update-note.md) - Set or clear a cell note
- [`gog slides (slide) <command> [flags]`](commands/gog-slides.md) - Google Slides
- [`gog slides (slide) add-slide <presentationId> <image> [flags]`](commands/gog-slides-add-slide.md) - Add a slide with a full-bleed image and optional speaker notes
- [`gog slides (slide) copy (cp,duplicate) <presentationId> <title> [flags]`](commands/gog-slides-copy.md) - Copy a Google Slides presentation
- [`gog slides (slide) create (add,new) <title> [flags]`](commands/gog-slides-create.md) - Create a Google Slides presentation
- [`gog slides (slide) create-from-markdown <title> [flags]`](commands/gog-slides-create-from-markdown.md) - Create a Google Slides presentation from markdown
- [`gog slides (slide) create-from-template <templateId> <title> [flags]`](commands/gog-slides-create-from-template.md) - Create a presentation from template with text replacements
- [`gog slides (slide) delete-slide <presentationId> <slideId>`](commands/gog-slides-delete-slide.md) - Delete a slide by object ID
- [`gog slides (slide) export (download,dl) <presentationId> [flags]`](commands/gog-slides-export.md) - Export a Google Slides deck (pdf|pptx)
- [`gog slides (slide) info (get,show) <presentationId>`](commands/gog-slides-info.md) - Get Google Slides presentation metadata
- [`gog slides (slide) insert-text <presentationId> <objectId> <text> [flags]`](commands/gog-slides-insert-text.md) - Insert text into an existing page element (shape or table) by objectId
- [`gog slides (slide) list-slides <presentationId>`](commands/gog-slides-list-slides.md) - List all slides with their object IDs
- [`gog slides (slide) raw <presentationId> [flags]`](commands/gog-slides-raw.md) - Dump raw Google Slides API response as JSON (Presentations.Get; lossless; for scripting and LLM consumption)
- [`gog slides (slide) read-slide <presentationId> <slideId>`](commands/gog-slides-read-slide.md) - Read slide content: speaker notes, text elements, and images
- [`gog slides (slide) replace-slide <presentationId> <slideId> <image> [flags]`](commands/gog-slides-replace-slide.md) - Replace the image on an existing slide in-place
- [`gog slides (slide) replace-text <presentationId> <find> <replacement> [flags]`](commands/gog-slides-replace-text.md) - Find-and-replace text across a presentation
- [`gog slides (slide) thumbnail (thumb) <presentationId> <slideId> [flags]`](commands/gog-slides-thumbnail.md) - Get or download a rendered thumbnail for a slide
- [`gog slides (slide) update-notes <presentationId> <slideId> [flags]`](commands/gog-slides-update-notes.md) - Update speaker notes on an existing slide
- [`gog status (st) [flags]`](commands/gog-status.md) - Show auth/config status (alias for 'auth status')
- [`gog tasks (task) <command> [flags]`](commands/gog-tasks.md) - Google Tasks
- [`gog tasks (task) add (create) <tasklistId> [flags]`](commands/gog-tasks-add.md) - Add a task
- [`gog tasks (task) clear <tasklistId>`](commands/gog-tasks-clear.md) - Clear completed tasks
- [`gog tasks (task) delete (rm,del,remove) <tasklistId> <taskId>`](commands/gog-tasks-delete.md) - Delete a task
- [`gog tasks (task) done (complete) <tasklistId> <taskId>`](commands/gog-tasks-done.md) - Mark task completed
- [`gog tasks (task) get (info,show) <tasklistId> <taskId>`](commands/gog-tasks-get.md) - Get a task
- [`gog tasks (task) list (ls) <tasklistId> [flags]`](commands/gog-tasks-list.md) - List tasks
- [`gog tasks (task) lists <command>`](commands/gog-tasks-lists.md) - List task lists
- [`gog tasks (task) lists create (add,new) <title> ...`](commands/gog-tasks-lists-create.md) - Create a task list
- [`gog tasks (task) lists list [flags]`](commands/gog-tasks-lists-list.md) - List task lists
- [`gog tasks (task) raw <tasklistId> <taskId> [flags]`](commands/gog-tasks-raw.md) - Dump raw Google Tasks API response as JSON (Tasks.Get; lossless; for scripting and LLM consumption)
- [`gog tasks (task) undo (uncomplete,undone) <tasklistId> <taskId>`](commands/gog-tasks-undo.md) - Mark task needs action
- [`gog tasks (task) update (edit,set) <tasklistId> <taskId> [flags]`](commands/gog-tasks-update.md) - Update a task
- [`gog time <command> [flags]`](commands/gog-time.md) - Local time utilities
- [`gog time now [flags]`](commands/gog-time-now.md) - Show current time
- [`gog upload (up,put) <localPath> [flags]`](commands/gog-upload.md) - Upload a file to Drive (alias for 'drive upload')
- [`gog version [flags]`](commands/gog-version.md) - Print version
- [`gog whoami (who-am-i) [flags]`](commands/gog-whoami.md) - Show your profile (alias for 'people me')

517
docs/commands/README.md Normal file
View File

@ -0,0 +1,517 @@
# Commands
Every `gog` command has a generated docs page. The source of truth is the live CLI schema; run `make docs-commands` after changing command names, flags, help text, aliases, or arguments.
Generated pages: 470.
## Top-level Commands
- [gog admin](gog-admin.md) - Google Workspace Admin (Directory API) - requires domain-wide delegation
- [gog agent](gog-agent.md) - Agent-friendly helpers
- [gog appscript](gog-appscript.md) - Google Apps Script
- [gog auth](gog-auth.md) - Auth and credentials
- [gog backup](gog-backup.md) - Encrypted Google account backups
- [gog calendar](gog-calendar.md) - Google Calendar
- [gog chat](gog-chat.md) - Google Chat
- [gog classroom](gog-classroom.md) - Google Classroom
- [gog completion](gog-completion.md) - Generate shell completion scripts
- [gog config](gog-config.md) - Manage configuration
- [gog contacts](gog-contacts.md) - Google Contacts
- [gog docs](gog-docs.md) - Google Docs (export via Drive)
- [gog download](gog-download.md) - Download a Drive file (alias for 'drive download')
- [gog drive](gog-drive.md) - Google Drive
- [gog exit-codes](gog-exit-codes.md) - Print stable exit codes (alias for 'agent exit-codes')
- [gog forms](gog-forms.md) - Google Forms
- [gog gmail](gog-gmail.md) - Gmail
- [gog groups](gog-groups.md) - Google Groups
- [gog keep](gog-keep.md) - Google Keep (Workspace only)
- [gog login](gog-login.md) - Authorize and store a refresh token (alias for 'auth add')
- [gog logout](gog-logout.md) - Remove a stored refresh token (alias for 'auth remove')
- [gog ls](gog-ls.md) - List Drive files (alias for 'drive ls')
- [gog me](gog-me.md) - Show your profile (alias for 'people me')
- [gog open](gog-open.md) - Print a best-effort web URL for a Google URL/ID (offline)
- [gog people](gog-people.md) - Google People
- [gog schema](gog-schema.md) - Machine-readable command/flag schema
- [gog search](gog-search.md) - Search Drive files (alias for 'drive search')
- [gog send](gog-send.md) - Send an email (alias for 'gmail send')
- [gog sheets](gog-sheets.md) - Google Sheets
- [gog slides](gog-slides.md) - Google Slides
- [gog status](gog-status.md) - Show auth/config status (alias for 'auth status')
- [gog tasks](gog-tasks.md) - Google Tasks
- [gog time](gog-time.md) - Local time utilities
- [gog upload](gog-upload.md) - Upload a file to Drive (alias for 'drive upload')
- [gog version](gog-version.md) - Print version
- [gog whoami](gog-whoami.md) - Show your profile (alias for 'people me')
## All Commands
- [gog](gog.md) - Google CLI for Gmail/Calendar/Chat/Classroom/Drive/Contacts/Tasks/Sheets/Docs/Slides/People/Forms/App Script/Ads/Groups/Admin/Keep
- [gog admin](gog-admin.md) - Google Workspace Admin (Directory API) - requires domain-wide delegation
- [gog admin groups](gog-admin-groups.md) - Manage Workspace groups
- [gog admin groups list](gog-admin-groups-list.md) - List groups in a domain
- [gog admin groups members](gog-admin-groups-members.md) - Manage group members
- [gog admin groups members add](gog-admin-groups-members-add.md) - Add a member to a group
- [gog admin groups members list](gog-admin-groups-members-list.md) - List group members
- [gog admin groups members remove](gog-admin-groups-members-remove.md) - Remove a member from a group
- [gog admin users](gog-admin-users.md) - Manage Workspace users
- [gog admin users create](gog-admin-users-create.md) - Create a new user
- [gog admin users get](gog-admin-users-get.md) - Get user details
- [gog admin users list](gog-admin-users-list.md) - List users in a domain
- [gog admin users suspend](gog-admin-users-suspend.md) - Suspend a user account
- [gog agent](gog-agent.md) - Agent-friendly helpers
- [gog agent exit-codes](gog-agent-exit-codes.md) - Print stable exit codes for automation
- [gog appscript](gog-appscript.md) - Google Apps Script
- [gog appscript content](gog-appscript-content.md) - Get Apps Script project content
- [gog appscript create](gog-appscript-create.md) - Create an Apps Script project
- [gog appscript get](gog-appscript-get.md) - Get Apps Script project metadata
- [gog appscript run](gog-appscript-run.md) - Run a deployed Apps Script function
- [gog auth](gog-auth.md) - Auth and credentials
- [gog auth add](gog-auth-add.md) - Authorize and store a refresh token
- [gog auth alias](gog-auth-alias.md) - Manage account aliases
- [gog auth alias list](gog-auth-alias-list.md) - List account aliases
- [gog auth alias set](gog-auth-alias-set.md) - Set an account alias
- [gog auth alias unset](gog-auth-alias-unset.md) - Remove an account alias
- [gog auth credentials](gog-auth-credentials.md) - Manage OAuth client credentials
- [gog auth credentials list](gog-auth-credentials-list.md) - List stored OAuth client credentials
- [gog auth credentials remove](gog-auth-credentials-remove.md) - Remove stored OAuth client credentials
- [gog auth credentials set](gog-auth-credentials-set.md) - Store OAuth client credentials
- [gog auth doctor](gog-auth-doctor.md) - Diagnose auth, keyring, and refresh-token issues
- [gog auth keep](gog-auth-keep.md) - Configure service account for Google Keep (Workspace only)
- [gog auth keyring](gog-auth-keyring.md) - Configure keyring backend
- [gog auth list](gog-auth-list.md) - List stored accounts
- [gog auth manage](gog-auth-manage.md) - Open accounts manager in browser
- [gog auth remove](gog-auth-remove.md) - Remove a stored refresh token
- [gog auth service-account](gog-auth-service-account.md) - Configure service account (Workspace only; domain-wide delegation)
- [gog auth service-account set](gog-auth-service-account-set.md) - Store a service account key for impersonation
- [gog auth service-account status](gog-auth-service-account-status.md) - Show stored service account key status
- [gog auth service-account unset](gog-auth-service-account-unset.md) - Remove stored service account key
- [gog auth services](gog-auth-services.md) - List supported auth services and scopes
- [gog auth status](gog-auth-status.md) - Show auth configuration and keyring backend
- [gog auth tokens](gog-auth-tokens.md) - Manage stored refresh tokens
- [gog auth tokens delete](gog-auth-tokens-delete.md) - Delete a stored refresh token
- [gog auth tokens export](gog-auth-tokens-export.md) - Export a refresh token to a file (contains secrets)
- [gog auth tokens import](gog-auth-tokens-import.md) - Import a refresh token file into keyring (contains secrets)
- [gog auth tokens list](gog-auth-tokens-list.md) - List stored tokens (by key only)
- [gog backup](gog-backup.md) - Encrypted Google account backups
- [gog backup cat](gog-backup-cat.md) - Decrypt one backup shard to stdout
- [gog backup export](gog-backup-export.md) - Write a local plaintext export
- [gog backup gmail](gog-backup-gmail.md) - Gmail backup operations
- [gog backup gmail push](gog-backup-gmail-push.md) - Export Gmail into encrypted backup shards
- [gog backup init](gog-backup-init.md) - Initialize encrypted backup config and repository
- [gog backup push](gog-backup-push.md) - Export services into encrypted backup shards
- [gog backup status](gog-backup-status.md) - Inspect backup manifest without decrypting shards
- [gog backup verify](gog-backup-verify.md) - Decrypt and verify all backup shards
- [gog calendar](gog-calendar.md) - Google Calendar
- [gog calendar acl](gog-calendar-acl.md) - List calendar ACL
- [gog calendar alias](gog-calendar-alias.md) - Manage calendar aliases
- [gog calendar alias list](gog-calendar-alias-list.md) - List calendar aliases
- [gog calendar alias set](gog-calendar-alias-set.md) - Set a calendar alias
- [gog calendar alias unset](gog-calendar-alias-unset.md) - Remove a calendar alias
- [gog calendar calendars](gog-calendar-calendars.md) - List calendars
- [gog calendar colors](gog-calendar-colors.md) - Show calendar colors
- [gog calendar conflicts](gog-calendar-conflicts.md) - Find conflicts
- [gog calendar create](gog-calendar-create.md) - Create an event
- [gog calendar create-calendar](gog-calendar-create-calendar.md) - Create a new secondary calendar
- [gog calendar delete](gog-calendar-delete.md) - Delete an event
- [gog calendar event](gog-calendar-event.md) - Get event
- [gog calendar events](gog-calendar-events.md) - List events from a calendar or all calendars
- [gog calendar focus-time](gog-calendar-focus-time.md) - Create a Focus Time block
- [gog calendar freebusy](gog-calendar-freebusy.md) - Get free/busy
- [gog calendar move](gog-calendar-move.md) - Move an event to another calendar
- [gog calendar out-of-office](gog-calendar-out-of-office.md) - Create an Out of Office event
- [gog calendar propose-time](gog-calendar-propose-time.md) - Generate URL to propose a new meeting time (browser-only feature)
- [gog calendar raw](gog-calendar-raw.md) - Dump raw Google Calendar API response as JSON (Events.Get; lossless; for scripting and LLM consumption)
- [gog calendar respond](gog-calendar-respond.md) - Respond to an event invitation
- [gog calendar search](gog-calendar-search.md) - Search events
- [gog calendar subscribe](gog-calendar-subscribe.md) - Add a calendar to your calendar list
- [gog calendar team](gog-calendar-team.md) - Show events for all members of a Google Group
- [gog calendar time](gog-calendar-time.md) - Show server time
- [gog calendar update](gog-calendar-update.md) - Update an event
- [gog calendar users](gog-calendar-users.md) - List workspace users (use their email as calendar ID)
- [gog calendar working-location](gog-calendar-working-location.md) - Set working location (home/office/custom)
- [gog chat](gog-chat.md) - Google Chat
- [gog chat dm](gog-chat-dm.md) - Direct messages
- [gog chat dm send](gog-chat-dm-send.md) - Send a direct message
- [gog chat dm space](gog-chat-dm-space.md) - Find or create a DM space
- [gog chat messages](gog-chat-messages.md) - Chat messages
- [gog chat messages list](gog-chat-messages-list.md) - List messages
- [gog chat messages react](gog-chat-messages-react.md) - Add an emoji reaction to a message
- [gog chat messages reactions](gog-chat-messages-reactions.md) - Manage emoji reactions on a message
- [gog chat messages reactions create](gog-chat-messages-reactions-create.md) - Add an emoji reaction to a message
- [gog chat messages reactions delete](gog-chat-messages-reactions-delete.md) - Delete a reaction
- [gog chat messages reactions list](gog-chat-messages-reactions-list.md) - List reactions on a message
- [gog chat messages send](gog-chat-messages-send.md) - Send a message
- [gog chat spaces](gog-chat-spaces.md) - Chat spaces
- [gog chat spaces create](gog-chat-spaces-create.md) - Create a space
- [gog chat spaces find](gog-chat-spaces-find.md) - Find spaces by display name
- [gog chat spaces list](gog-chat-spaces-list.md) - List spaces
- [gog chat threads](gog-chat-threads.md) - Chat threads
- [gog chat threads list](gog-chat-threads-list.md) - List threads in a space
- [gog classroom](gog-classroom.md) - Google Classroom
- [gog classroom announcements](gog-classroom-announcements.md) - Announcements
- [gog classroom announcements assignees](gog-classroom-announcements-assignees.md) - Modify announcement assignees
- [gog classroom announcements create](gog-classroom-announcements-create.md) - Create an announcement
- [gog classroom announcements delete](gog-classroom-announcements-delete.md) - Delete an announcement
- [gog classroom announcements get](gog-classroom-announcements-get.md) - Get an announcement
- [gog classroom announcements list](gog-classroom-announcements-list.md) - List announcements
- [gog classroom announcements update](gog-classroom-announcements-update.md) - Update an announcement
- [gog classroom courses](gog-classroom-courses.md) - Courses
- [gog classroom courses archive](gog-classroom-courses-archive.md) - Archive a course
- [gog classroom courses create](gog-classroom-courses-create.md) - Create a course
- [gog classroom courses delete](gog-classroom-courses-delete.md) - Delete a course
- [gog classroom courses get](gog-classroom-courses-get.md) - Get a course
- [gog classroom courses join](gog-classroom-courses-join.md) - Join a course
- [gog classroom courses leave](gog-classroom-courses-leave.md) - Leave a course
- [gog classroom courses list](gog-classroom-courses-list.md) - List courses
- [gog classroom courses unarchive](gog-classroom-courses-unarchive.md) - Unarchive a course
- [gog classroom courses update](gog-classroom-courses-update.md) - Update a course
- [gog classroom courses url](gog-classroom-courses-url.md) - Print Classroom web URLs for courses
- [gog classroom coursework](gog-classroom-coursework.md) - Coursework
- [gog classroom coursework assignees](gog-classroom-coursework-assignees.md) - Modify coursework assignees
- [gog classroom coursework create](gog-classroom-coursework-create.md) - Create coursework
- [gog classroom coursework delete](gog-classroom-coursework-delete.md) - Delete coursework
- [gog classroom coursework get](gog-classroom-coursework-get.md) - Get coursework
- [gog classroom coursework list](gog-classroom-coursework-list.md) - List coursework
- [gog classroom coursework update](gog-classroom-coursework-update.md) - Update coursework
- [gog classroom guardian-invitations](gog-classroom-guardian-invitations.md) - Guardian invitations
- [gog classroom guardian-invitations create](gog-classroom-guardian-invitations-create.md) - Create a guardian invitation
- [gog classroom guardian-invitations get](gog-classroom-guardian-invitations-get.md) - Get a guardian invitation
- [gog classroom guardian-invitations list](gog-classroom-guardian-invitations-list.md) - List guardian invitations
- [gog classroom guardians](gog-classroom-guardians.md) - Guardians
- [gog classroom guardians delete](gog-classroom-guardians-delete.md) - Delete a guardian
- [gog classroom guardians get](gog-classroom-guardians-get.md) - Get a guardian
- [gog classroom guardians list](gog-classroom-guardians-list.md) - List guardians
- [gog classroom invitations](gog-classroom-invitations.md) - Invitations
- [gog classroom invitations accept](gog-classroom-invitations-accept.md) - Accept an invitation
- [gog classroom invitations create](gog-classroom-invitations-create.md) - Create an invitation
- [gog classroom invitations delete](gog-classroom-invitations-delete.md) - Delete an invitation
- [gog classroom invitations get](gog-classroom-invitations-get.md) - Get an invitation
- [gog classroom invitations list](gog-classroom-invitations-list.md) - List invitations
- [gog classroom materials](gog-classroom-materials.md) - Coursework materials
- [gog classroom materials create](gog-classroom-materials-create.md) - Create coursework material
- [gog classroom materials delete](gog-classroom-materials-delete.md) - Delete coursework material
- [gog classroom materials get](gog-classroom-materials-get.md) - Get coursework material
- [gog classroom materials list](gog-classroom-materials-list.md) - List coursework materials
- [gog classroom materials update](gog-classroom-materials-update.md) - Update coursework material
- [gog classroom profile](gog-classroom-profile.md) - User profiles
- [gog classroom profile get](gog-classroom-profile-get.md) - Get a user profile
- [gog classroom roster](gog-classroom-roster.md) - Course roster (students + teachers)
- [gog classroom students](gog-classroom-students.md) - Course students
- [gog classroom students add](gog-classroom-students-add.md) - Add a student
- [gog classroom students get](gog-classroom-students-get.md) - Get a student
- [gog classroom students list](gog-classroom-students-list.md) - List students
- [gog classroom students remove](gog-classroom-students-remove.md) - Remove a student
- [gog classroom submissions](gog-classroom-submissions.md) - Student submissions
- [gog classroom submissions get](gog-classroom-submissions-get.md) - Get a student submission
- [gog classroom submissions grade](gog-classroom-submissions-grade.md) - Set draft/assigned grades
- [gog classroom submissions list](gog-classroom-submissions-list.md) - List student submissions
- [gog classroom submissions reclaim](gog-classroom-submissions-reclaim.md) - Reclaim a submission
- [gog classroom submissions return](gog-classroom-submissions-return.md) - Return a submission
- [gog classroom submissions turn-in](gog-classroom-submissions-turn-in.md) - Turn in a submission
- [gog classroom teachers](gog-classroom-teachers.md) - Course teachers
- [gog classroom teachers add](gog-classroom-teachers-add.md) - Add a teacher
- [gog classroom teachers get](gog-classroom-teachers-get.md) - Get a teacher
- [gog classroom teachers list](gog-classroom-teachers-list.md) - List teachers
- [gog classroom teachers remove](gog-classroom-teachers-remove.md) - Remove a teacher
- [gog classroom topics](gog-classroom-topics.md) - Topics
- [gog classroom topics create](gog-classroom-topics-create.md) - Create a topic
- [gog classroom topics delete](gog-classroom-topics-delete.md) - Delete a topic
- [gog classroom topics get](gog-classroom-topics-get.md) - Get a topic
- [gog classroom topics list](gog-classroom-topics-list.md) - List topics
- [gog classroom topics update](gog-classroom-topics-update.md) - Update a topic
- [gog completion](gog-completion.md) - Generate shell completion scripts
- [gog config](gog-config.md) - Manage configuration
- [gog config get](gog-config-get.md) - Get a config value
- [gog config keys](gog-config-keys.md) - List available config keys
- [gog config list](gog-config-list.md) - List all config values
- [gog config no-send](gog-config-no-send.md) - Manage per-account Gmail no-send guards
- [gog config no-send list](gog-config-no-send-list.md) - List accounts with no-send guards
- [gog config no-send remove](gog-config-no-send-remove.md) - Remove an account no-send guard
- [gog config no-send set](gog-config-no-send-set.md) - Block Gmail send operations for an account
- [gog config path](gog-config-path.md) - Print config file path
- [gog config set](gog-config-set.md) - Set a config value
- [gog config unset](gog-config-unset.md) - Unset a config value
- [gog contacts](gog-contacts.md) - Google Contacts
- [gog contacts create](gog-contacts-create.md) - Create a contact
- [gog contacts dedupe](gog-contacts-dedupe.md) - Find likely duplicate contacts (preview only)
- [gog contacts delete](gog-contacts-delete.md) - Delete a contact
- [gog contacts directory](gog-contacts-directory.md) - Directory contacts
- [gog contacts directory list](gog-contacts-directory-list.md) - List people from the Workspace directory
- [gog contacts directory search](gog-contacts-directory-search.md) - Search people in the Workspace directory
- [gog contacts export](gog-contacts-export.md) - Export contacts as vCard (.vcf)
- [gog contacts get](gog-contacts-get.md) - Get a contact
- [gog contacts list](gog-contacts-list.md) - List contacts
- [gog contacts other](gog-contacts-other.md) - Other contacts
- [gog contacts other delete](gog-contacts-other-delete.md) - Delete an other contact
- [gog contacts other list](gog-contacts-other-list.md) - List other contacts
- [gog contacts other search](gog-contacts-other-search.md) - Search other contacts
- [gog contacts raw](gog-contacts-raw.md) - Dump raw People API response as JSON (People.Get; lossless; for scripting and LLM consumption)
- [gog contacts search](gog-contacts-search.md) - Search contacts by name/email/phone
- [gog contacts update](gog-contacts-update.md) - Update a contact
- [gog docs](gog-docs.md) - Google Docs (export via Drive)
- [gog docs add-tab](gog-docs-add-tab.md) - Add a tab to a Google Doc
- [gog docs cat](gog-docs-cat.md) - Print a Google Doc as plain text
- [gog docs clear](gog-docs-clear.md) - Clear all content from a Google Doc
- [gog docs comments](gog-docs-comments.md) - Manage comments on files
- [gog docs comments add](gog-docs-comments-add.md) - Add a comment to a Google Doc
- [gog docs comments delete](gog-docs-comments-delete.md) - Delete a comment
- [gog docs comments get](gog-docs-comments-get.md) - Get a comment by ID
- [gog docs comments list](gog-docs-comments-list.md) - List comments on a Google Doc
- [gog docs comments reply](gog-docs-comments-reply.md) - Reply to a comment
- [gog docs comments resolve](gog-docs-comments-resolve.md) - Resolve a comment (mark as done)
- [gog docs copy](gog-docs-copy.md) - Copy a Google Doc
- [gog docs create](gog-docs-create.md) - Create a Google Doc
- [gog docs delete](gog-docs-delete.md) - Delete text range from document
- [gog docs delete-tab](gog-docs-delete-tab.md) - Delete a tab from a Google Doc
- [gog docs edit](gog-docs-edit.md) - Find and replace text in a Google Doc
- [gog docs export](gog-docs-export.md) - Export a Google Doc (pdf|docx|txt|md|html)
- [gog docs find-replace](gog-docs-find-replace.md) - Find and replace text. Supports plain text or markdown with images; use --first for a single occurrence.
- [gog docs format](gog-docs-format.md) - Apply text or paragraph formatting to a Google Doc
- [gog docs info](gog-docs-info.md) - Get Google Doc metadata
- [gog docs insert](gog-docs-insert.md) - Insert text at a specific position
- [gog docs list-tabs](gog-docs-list-tabs.md) - List all tabs in a Google Doc
- [gog docs raw](gog-docs-raw.md) - Dump raw Google Docs API response as JSON (Documents.Get; lossless; for scripting and LLM consumption)
- [gog docs rename-tab](gog-docs-rename-tab.md) - Rename a tab in a Google Doc
- [gog docs sed](gog-docs-sed.md) - Regex find/replace (sed-style: s/pattern/replacement/g)
- [gog docs structure](gog-docs-structure.md) - Show document structure with numbered paragraphs
- [gog docs update](gog-docs-update.md) - Insert text at a specific index in a Google Doc
- [gog docs write](gog-docs-write.md) - Write content to a Google Doc
- [gog download](gog-download.md) - Download a Drive file (alias for 'drive download')
- [gog drive](gog-drive.md) - Google Drive
- [gog drive comments](gog-drive-comments.md) - Manage comments on files
- [gog drive comments create](gog-drive-comments-create.md) - Create a comment on a file
- [gog drive comments delete](gog-drive-comments-delete.md) - Delete a comment
- [gog drive comments get](gog-drive-comments-get.md) - Get a comment by ID
- [gog drive comments list](gog-drive-comments-list.md) - List comments on a file
- [gog drive comments reply](gog-drive-comments-reply.md) - Reply to a comment
- [gog drive comments update](gog-drive-comments-update.md) - Update a comment
- [gog drive copy](gog-drive-copy.md) - Copy a file
- [gog drive delete](gog-drive-delete.md) - Move a file to trash (use --permanent to delete forever)
- [gog drive download](gog-drive-download.md) - Download a file (exports Google Docs formats)
- [gog drive drives](gog-drive-drives.md) - List shared drives (Team Drives)
- [gog drive du](gog-drive-du.md) - Summarize Drive folder sizes
- [gog drive get](gog-drive-get.md) - Get file metadata
- [gog drive inventory](gog-drive-inventory.md) - Export a read-only Drive inventory
- [gog drive ls](gog-drive-ls.md) - List files in a folder (default: root)
- [gog drive mkdir](gog-drive-mkdir.md) - Create a folder
- [gog drive move](gog-drive-move.md) - Move a file to a different folder
- [gog drive permissions](gog-drive-permissions.md) - List permissions on a file
- [gog drive raw](gog-drive-raw.md) - Dump raw Google Drive API response as JSON (Files.Get; lossless; for scripting and LLM consumption)
- [gog drive rename](gog-drive-rename.md) - Rename a file or folder
- [gog drive search](gog-drive-search.md) - Full-text search across Drive
- [gog drive share](gog-drive-share.md) - Share a file or folder
- [gog drive tree](gog-drive-tree.md) - Print a read-only folder tree
- [gog drive unshare](gog-drive-unshare.md) - Remove a permission from a file
- [gog drive upload](gog-drive-upload.md) - Upload a file
- [gog drive url](gog-drive-url.md) - Print web URLs for files
- [gog exit-codes](gog-exit-codes.md) - Print stable exit codes (alias for 'agent exit-codes')
- [gog forms](gog-forms.md) - Google Forms
- [gog forms add-question](gog-forms-add-question.md) - Add a question to a form
- [gog forms create](gog-forms-create.md) - Create a form
- [gog forms delete-question](gog-forms-delete-question.md) - Delete a question by index
- [gog forms get](gog-forms-get.md) - Get a form
- [gog forms move-question](gog-forms-move-question.md) - Move a question to a new position
- [gog forms raw](gog-forms-raw.md) - Dump raw Google Forms API response as JSON (Forms.Get; lossless; for scripting and LLM consumption)
- [gog forms responses](gog-forms-responses.md) - Form responses
- [gog forms responses get](gog-forms-responses-get.md) - Get a form response
- [gog forms responses list](gog-forms-responses-list.md) - List form responses
- [gog forms update](gog-forms-update.md) - Update form title, description, or settings
- [gog forms watch](gog-forms-watch.md) - Response watches (push notifications)
- [gog forms watch create](gog-forms-watch-create.md) - Create a watch for new responses
- [gog forms watch delete](gog-forms-watch-delete.md) - Delete a watch
- [gog forms watch list](gog-forms-watch-list.md) - List active watches
- [gog forms watch renew](gog-forms-watch-renew.md) - Renew a watch (extends 7 days)
- [gog gmail](gog-gmail.md) - Gmail
- [gog gmail archive](gog-gmail-archive.md) - Archive messages (remove from inbox)
- [gog gmail attachment](gog-gmail-attachment.md) - Download a single attachment
- [gog gmail autoreply](gog-gmail-autoreply.md) - Reply once to matching messages
- [gog gmail batch](gog-gmail-batch.md) - Batch operations (permanent delete requires broader Gmail scope; use gmail trash for normal trashing)
- [gog gmail batch delete](gog-gmail-batch-delete.md) - Permanently delete multiple messages; use 'gmail trash' to move messages to trash with the default gmail.modify scope
- [gog gmail batch modify](gog-gmail-batch-modify.md) - Modify labels on multiple messages
- [gog gmail drafts](gog-gmail-drafts.md) - Draft operations
- [gog gmail drafts create](gog-gmail-drafts-create.md) - Create a draft
- [gog gmail drafts delete](gog-gmail-drafts-delete.md) - Delete a draft
- [gog gmail drafts get](gog-gmail-drafts-get.md) - Get draft details
- [gog gmail drafts list](gog-gmail-drafts-list.md) - List drafts
- [gog gmail drafts send](gog-gmail-drafts-send.md) - Send a draft
- [gog gmail drafts update](gog-gmail-drafts-update.md) - Update a draft
- [gog gmail forward](gog-gmail-forward.md) - Forward a message to new recipients
- [gog gmail get](gog-gmail-get.md) - Get a message (full|metadata|raw)
- [gog gmail history](gog-gmail-history.md) - Gmail history
- [gog gmail labels](gog-gmail-labels.md) - Label operations
- [gog gmail labels create](gog-gmail-labels-create.md) - Create a new label
- [gog gmail labels delete](gog-gmail-labels-delete.md) - Delete a label
- [gog gmail labels get](gog-gmail-labels-get.md) - Get label details (including counts)
- [gog gmail labels list](gog-gmail-labels-list.md) - List labels
- [gog gmail labels modify](gog-gmail-labels-modify.md) - Modify labels on threads
- [gog gmail labels rename](gog-gmail-labels-rename.md) - Rename a label
- [gog gmail labels style](gog-gmail-labels-style.md) - Change a user label color or visibility
- [gog gmail mark-read](gog-gmail-mark-read.md) - Mark messages as read
- [gog gmail messages](gog-gmail-messages.md) - Message operations
- [gog gmail messages modify](gog-gmail-messages-modify.md) - Modify labels on a single message
- [gog gmail messages search](gog-gmail-messages-search.md) - Search messages using Gmail query syntax
- [gog gmail raw](gog-gmail-raw.md) - Dump raw Gmail API response as JSON (Users.Messages.Get; lossless; for scripting and LLM consumption)
- [gog gmail search](gog-gmail-search.md) - Search threads using Gmail query syntax
- [gog gmail send](gog-gmail-send.md) - Send an email
- [gog gmail settings](gog-gmail-settings.md) - Settings and admin
- [gog gmail settings autoforward](gog-gmail-settings-autoforward.md) - Auto-forwarding settings
- [gog gmail settings autoforward get](gog-gmail-settings-autoforward-get.md) - Get current auto-forwarding settings
- [gog gmail settings autoforward update](gog-gmail-settings-autoforward-update.md) - Update auto-forwarding settings
- [gog gmail settings delegates](gog-gmail-settings-delegates.md) - Delegate operations
- [gog gmail settings delegates add](gog-gmail-settings-delegates-add.md) - Add a delegate
- [gog gmail settings delegates get](gog-gmail-settings-delegates-get.md) - Get a specific delegate's information
- [gog gmail settings delegates list](gog-gmail-settings-delegates-list.md) - List all delegates
- [gog gmail settings delegates remove](gog-gmail-settings-delegates-remove.md) - Remove a delegate
- [gog gmail settings filters](gog-gmail-settings-filters.md) - Filter operations
- [gog gmail settings filters create](gog-gmail-settings-filters-create.md) - Create a new email filter
- [gog gmail settings filters delete](gog-gmail-settings-filters-delete.md) - Delete a filter
- [gog gmail settings filters export](gog-gmail-settings-filters-export.md) - Export filters as Gmail WebUI-compatible XML
- [gog gmail settings filters get](gog-gmail-settings-filters-get.md) - Get a specific filter
- [gog gmail settings filters list](gog-gmail-settings-filters-list.md) - List all email filters
- [gog gmail settings forwarding](gog-gmail-settings-forwarding.md) - Forwarding addresses
- [gog gmail settings forwarding create](gog-gmail-settings-forwarding-create.md) - Create/add a forwarding address
- [gog gmail settings forwarding delete](gog-gmail-settings-forwarding-delete.md) - Delete a forwarding address
- [gog gmail settings forwarding get](gog-gmail-settings-forwarding-get.md) - Get a specific forwarding address
- [gog gmail settings forwarding list](gog-gmail-settings-forwarding-list.md) - List all forwarding addresses
- [gog gmail settings sendas](gog-gmail-settings-sendas.md) - Send-as settings
- [gog gmail settings sendas create](gog-gmail-settings-sendas-create.md) - Create a new send-as alias
- [gog gmail settings sendas delete](gog-gmail-settings-sendas-delete.md) - Delete a send-as alias
- [gog gmail settings sendas get](gog-gmail-settings-sendas-get.md) - Get details of a send-as alias
- [gog gmail settings sendas list](gog-gmail-settings-sendas-list.md) - List send-as aliases
- [gog gmail settings sendas update](gog-gmail-settings-sendas-update.md) - Update a send-as alias
- [gog gmail settings sendas verify](gog-gmail-settings-sendas-verify.md) - Resend verification email for a send-as alias
- [gog gmail settings vacation](gog-gmail-settings-vacation.md) - Vacation responder
- [gog gmail settings vacation get](gog-gmail-settings-vacation-get.md) - Get current vacation responder settings
- [gog gmail settings vacation update](gog-gmail-settings-vacation-update.md) - Update vacation responder settings
- [gog gmail settings watch](gog-gmail-settings-watch.md) - Manage Gmail watch
- [gog gmail settings watch renew](gog-gmail-settings-watch-renew.md) - Renew Gmail watch using stored config
- [gog gmail settings watch serve](gog-gmail-settings-watch-serve.md) - Run Pub/Sub push handler
- [gog gmail settings watch start](gog-gmail-settings-watch-start.md) - Start Gmail watch for Pub/Sub
- [gog gmail settings watch status](gog-gmail-settings-watch-status.md) - Show stored watch state
- [gog gmail settings watch stop](gog-gmail-settings-watch-stop.md) - Stop Gmail watch and clear stored state
- [gog gmail thread](gog-gmail-thread.md) - Thread operations (get, modify)
- [gog gmail thread attachments](gog-gmail-thread-attachments.md) - List all attachments in a thread
- [gog gmail thread get](gog-gmail-thread-get.md) - Get a thread with all messages (optionally download attachments)
- [gog gmail thread modify](gog-gmail-thread-modify.md) - Modify labels on all messages in a thread
- [gog gmail track](gog-gmail-track.md) - Email open tracking
- [gog gmail track key](gog-gmail-track-key.md) - Manage tracking encryption keys
- [gog gmail track key rotate](gog-gmail-track-key-rotate.md) - Rotate tracking encryption key
- [gog gmail track opens](gog-gmail-track-opens.md) - Query email opens
- [gog gmail track setup](gog-gmail-track-setup.md) - Set up email tracking (deploy Cloudflare Worker)
- [gog gmail track status](gog-gmail-track-status.md) - Show tracking configuration status
- [gog gmail trash](gog-gmail-trash.md) - Move messages to trash
- [gog gmail unread](gog-gmail-unread.md) - Mark messages as unread
- [gog gmail url](gog-gmail-url.md) - Print Gmail web URLs for threads
- [gog groups](gog-groups.md) - Google Groups
- [gog groups list](gog-groups-list.md) - List groups you belong to
- [gog groups members](gog-groups-members.md) - List members of a group
- [gog keep](gog-keep.md) - Google Keep (Workspace only)
- [gog keep attachment](gog-keep-attachment.md) - Download an attachment
- [gog keep create](gog-keep-create.md) - Create a new note
- [gog keep delete](gog-keep-delete.md) - Delete a note
- [gog keep get](gog-keep-get.md) - Get a note
- [gog keep list](gog-keep-list.md) - List notes
- [gog keep search](gog-keep-search.md) - Search notes by text (client-side)
- [gog login](gog-login.md) - Authorize and store a refresh token (alias for 'auth add')
- [gog logout](gog-logout.md) - Remove a stored refresh token (alias for 'auth remove')
- [gog ls](gog-ls.md) - List Drive files (alias for 'drive ls')
- [gog me](gog-me.md) - Show your profile (alias for 'people me')
- [gog open](gog-open.md) - Print a best-effort web URL for a Google URL/ID (offline)
- [gog people](gog-people.md) - Google People
- [gog people get](gog-people-get.md) - Get a user profile by ID
- [gog people me](gog-people-me.md) - Show your profile (people/me)
- [gog people raw](gog-people-raw.md) - Dump raw People API response as JSON (People.Get; lossless; for scripting and LLM consumption)
- [gog people relations](gog-people-relations.md) - Get user relations
- [gog people search](gog-people-search.md) - Search the Workspace directory
- [gog schema](gog-schema.md) - Machine-readable command/flag schema
- [gog search](gog-search.md) - Search Drive files (alias for 'drive search')
- [gog send](gog-send.md) - Send an email (alias for 'gmail send')
- [gog sheets](gog-sheets.md) - Google Sheets
- [gog sheets add-tab](gog-sheets-add-tab.md) - Add a new tab/sheet to a spreadsheet
- [gog sheets append](gog-sheets-append.md) - Append values to a range
- [gog sheets banding](gog-sheets-banding.md) - Manage alternating color banding
- [gog sheets banding clear](gog-sheets-banding-clear.md) - Remove alternating color banding
- [gog sheets banding list](gog-sheets-banding-list.md) - List alternating color banded ranges
- [gog sheets banding set](gog-sheets-banding-set.md) - Apply alternating colors to a range
- [gog sheets chart](gog-sheets-chart.md) - Manage spreadsheet charts
- [gog sheets chart create](gog-sheets-chart-create.md) - Create a chart from a JSON spec
- [gog sheets chart delete](gog-sheets-chart-delete.md) - Delete a chart
- [gog sheets chart get](gog-sheets-chart-get.md) - Get full chart definition (spec + position)
- [gog sheets chart list](gog-sheets-chart-list.md) - List charts in a spreadsheet
- [gog sheets chart update](gog-sheets-chart-update.md) - Update a chart spec
- [gog sheets clear](gog-sheets-clear.md) - Clear values in a range
- [gog sheets conditional-format](gog-sheets-conditional-format.md) - Manage conditional formatting rules
- [gog sheets conditional-format add](gog-sheets-conditional-format-add.md) - Add a conditional formatting rule
- [gog sheets conditional-format clear](gog-sheets-conditional-format-clear.md) - Remove conditional formatting rules
- [gog sheets conditional-format list](gog-sheets-conditional-format-list.md) - List conditional formatting rules
- [gog sheets copy](gog-sheets-copy.md) - Copy a Google Sheet
- [gog sheets create](gog-sheets-create.md) - Create a new spreadsheet
- [gog sheets delete-tab](gog-sheets-delete-tab.md) - Delete a tab/sheet from a spreadsheet (use --force to skip confirmation)
- [gog sheets export](gog-sheets-export.md) - Export a Google Sheet (pdf|xlsx|csv) via Drive
- [gog sheets find-replace](gog-sheets-find-replace.md) - Find and replace text across a spreadsheet
- [gog sheets format](gog-sheets-format.md) - Apply cell formatting to a range
- [gog sheets freeze](gog-sheets-freeze.md) - Freeze rows and columns on a sheet
- [gog sheets get](gog-sheets-get.md) - Get values from a range
- [gog sheets insert](gog-sheets-insert.md) - Insert empty rows or columns into a sheet
- [gog sheets links](gog-sheets-links.md) - Get cell hyperlinks from a range
- [gog sheets merge](gog-sheets-merge.md) - Merge cells in a range
- [gog sheets metadata](gog-sheets-metadata.md) - Get spreadsheet metadata
- [gog sheets named-ranges](gog-sheets-named-ranges.md) - Manage named ranges
- [gog sheets named-ranges add](gog-sheets-named-ranges-add.md) - Add a named range
- [gog sheets named-ranges delete](gog-sheets-named-ranges-delete.md) - Delete a named range
- [gog sheets named-ranges get](gog-sheets-named-ranges-get.md) - Get a named range
- [gog sheets named-ranges list](gog-sheets-named-ranges-list.md) - List named ranges
- [gog sheets named-ranges update](gog-sheets-named-ranges-update.md) - Update a named range
- [gog sheets notes](gog-sheets-notes.md) - Get cell notes from a range
- [gog sheets number-format](gog-sheets-number-format.md) - Apply number format to a range
- [gog sheets raw](gog-sheets-raw.md) - Dump raw Google Sheets API response as JSON (Spreadsheets.Get; lossless; for scripting and LLM consumption)
- [gog sheets read-format](gog-sheets-read-format.md) - Read cell formatting from a range
- [gog sheets rename-tab](gog-sheets-rename-tab.md) - Rename a tab/sheet in a spreadsheet
- [gog sheets resize-columns](gog-sheets-resize-columns.md) - Resize sheet columns
- [gog sheets resize-rows](gog-sheets-resize-rows.md) - Resize sheet rows
- [gog sheets table](gog-sheets-table.md) - Manage Google Sheets tables
- [gog sheets table append](gog-sheets-table-append.md) - Append rows to a table
- [gog sheets table clear](gog-sheets-table-clear.md) - Clear table data rows
- [gog sheets table create](gog-sheets-table-create.md) - Create a table
- [gog sheets table delete](gog-sheets-table-delete.md) - Delete a table
- [gog sheets table get](gog-sheets-table-get.md) - Get a table
- [gog sheets table list](gog-sheets-table-list.md) - List tables in a spreadsheet
- [gog sheets unmerge](gog-sheets-unmerge.md) - Unmerge cells in a range
- [gog sheets update](gog-sheets-update.md) - Update values in a range
- [gog sheets update-note](gog-sheets-update-note.md) - Set or clear a cell note
- [gog slides](gog-slides.md) - Google Slides
- [gog slides add-slide](gog-slides-add-slide.md) - Add a slide with a full-bleed image and optional speaker notes
- [gog slides copy](gog-slides-copy.md) - Copy a Google Slides presentation
- [gog slides create](gog-slides-create.md) - Create a Google Slides presentation
- [gog slides create-from-markdown](gog-slides-create-from-markdown.md) - Create a Google Slides presentation from markdown
- [gog slides create-from-template](gog-slides-create-from-template.md) - Create a presentation from template with text replacements
- [gog slides delete-slide](gog-slides-delete-slide.md) - Delete a slide by object ID
- [gog slides export](gog-slides-export.md) - Export a Google Slides deck (pdf|pptx)
- [gog slides info](gog-slides-info.md) - Get Google Slides presentation metadata
- [gog slides insert-text](gog-slides-insert-text.md) - Insert text into an existing page element (shape or table) by objectId
- [gog slides list-slides](gog-slides-list-slides.md) - List all slides with their object IDs
- [gog slides raw](gog-slides-raw.md) - Dump raw Google Slides API response as JSON (Presentations.Get; lossless; for scripting and LLM consumption)
- [gog slides read-slide](gog-slides-read-slide.md) - Read slide content: speaker notes, text elements, and images
- [gog slides replace-slide](gog-slides-replace-slide.md) - Replace the image on an existing slide in-place
- [gog slides replace-text](gog-slides-replace-text.md) - Find-and-replace text across a presentation
- [gog slides thumbnail](gog-slides-thumbnail.md) - Get or download a rendered thumbnail for a slide
- [gog slides update-notes](gog-slides-update-notes.md) - Update speaker notes on an existing slide
- [gog status](gog-status.md) - Show auth/config status (alias for 'auth status')
- [gog tasks](gog-tasks.md) - Google Tasks
- [gog tasks add](gog-tasks-add.md) - Add a task
- [gog tasks clear](gog-tasks-clear.md) - Clear completed tasks
- [gog tasks delete](gog-tasks-delete.md) - Delete a task
- [gog tasks done](gog-tasks-done.md) - Mark task completed
- [gog tasks get](gog-tasks-get.md) - Get a task
- [gog tasks list](gog-tasks-list.md) - List tasks
- [gog tasks lists](gog-tasks-lists.md) - List task lists
- [gog tasks lists create](gog-tasks-lists-create.md) - Create a task list
- [gog tasks lists list](gog-tasks-lists-list.md) - List task lists
- [gog tasks raw](gog-tasks-raw.md) - Dump raw Google Tasks API response as JSON (Tasks.Get; lossless; for scripting and LLM consumption)
- [gog tasks undo](gog-tasks-undo.md) - Mark task needs action
- [gog tasks update](gog-tasks-update.md) - Update a task
- [gog time](gog-time.md) - Local time utilities
- [gog time now](gog-time-now.md) - Show current time
- [gog upload](gog-upload.md) - Upload a file to Drive (alias for 'drive upload')
- [gog version](gog-version.md) - Print version
- [gog whoami](gog-whoami.md) - Show your profile (alias for 'people me')

View File

@ -0,0 +1,47 @@
# `gog admin groups list`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
List groups in a domain
## Usage
```bash
gog admin groups list (ls) [flags]
```
## Parent
- [gog admin groups](gog-admin-groups.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--all`<br>`--all-pages`<br>`--allpages` | `bool` | | Fetch all pages |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `--domain` | `string` | | Domain to list groups from (e.g., example.com) |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `--fail-empty`<br>`--non-empty`<br>`--require-results` | `bool` | | Exit with code 3 if no results |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--max`<br>`--limit` | `int64` | 100 | Max results |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--page`<br>`--cursor` | `string` | | Page token |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog admin groups](gog-admin-groups.md)
- [Command index](README.md)

View File

@ -0,0 +1,43 @@
# `gog admin groups members add`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Add a member to a group
## Usage
```bash
gog admin groups members add (invite) <groupEmail> <memberEmail> [flags]
```
## Parent
- [gog admin groups members](gog-admin-groups-members.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--role` | `string` | MEMBER | Member role (MEMBER, MANAGER, OWNER) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog admin groups members](gog-admin-groups-members.md)
- [Command index](README.md)

View File

@ -0,0 +1,46 @@
# `gog admin groups members list`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
List group members
## Usage
```bash
gog admin groups members list (ls) <groupEmail> [flags]
```
## Parent
- [gog admin groups members](gog-admin-groups-members.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--all`<br>`--all-pages`<br>`--allpages` | `bool` | | Fetch all pages |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `--fail-empty`<br>`--non-empty`<br>`--require-results` | `bool` | | Exit with code 3 if no results |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--max`<br>`--limit` | `int64` | 100 | Max results |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--page`<br>`--cursor` | `string` | | Page token |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog admin groups members](gog-admin-groups-members.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog admin groups members remove`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Remove a member from a group
## Usage
```bash
gog admin groups members remove (rm,del,delete) <groupEmail> <memberEmail>
```
## Parent
- [gog admin groups members](gog-admin-groups-members.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog admin groups members](gog-admin-groups-members.md)
- [Command index](README.md)

View File

@ -0,0 +1,48 @@
# `gog admin groups members`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Manage group members
## Usage
```bash
gog admin groups members <command>
```
## Parent
- [gog admin groups](gog-admin-groups.md)
## Subcommands
- [gog admin groups members add](gog-admin-groups-members-add.md) - Add a member to a group
- [gog admin groups members list](gog-admin-groups-members-list.md) - List group members
- [gog admin groups members remove](gog-admin-groups-members-remove.md) - Remove a member from a group
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog admin groups](gog-admin-groups.md)
- [Command index](README.md)

View File

@ -0,0 +1,47 @@
# `gog admin groups`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Manage Workspace groups
## Usage
```bash
gog admin groups <command>
```
## Parent
- [gog admin](gog-admin.md)
## Subcommands
- [gog admin groups list](gog-admin-groups-list.md) - List groups in a domain
- [gog admin groups members](gog-admin-groups-members.md) - Manage group members
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog admin](gog-admin.md)
- [Command index](README.md)

View File

@ -0,0 +1,48 @@
# `gog admin users create`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Create a new user
## Usage
```bash
gog admin users create (add,new) <email> [flags]
```
## Parent
- [gog admin users](gog-admin-users.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--admin` | `bool` | | Not supported; assign admin roles separately after user creation |
| `--change-password` | `bool` | | Require password change on first login |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `--family` | `string` | | Family (last) name |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--given` | `string` | | Given (first) name |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--org-unit` | `string` | | Organization unit path |
| `--password` | `string` | | Initial password |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog admin users](gog-admin-users.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog admin users get`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Get user details
## Usage
```bash
gog admin users get (info,show) <userEmail>
```
## Parent
- [gog admin users](gog-admin-users.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog admin users](gog-admin-users.md)
- [Command index](README.md)

View File

@ -0,0 +1,47 @@
# `gog admin users list`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
List users in a domain
## Usage
```bash
gog admin users list (ls) [flags]
```
## Parent
- [gog admin users](gog-admin-users.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--all`<br>`--all-pages`<br>`--allpages` | `bool` | | Fetch all pages |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `--domain` | `string` | | Domain to list users from (e.g., example.com) |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `--fail-empty`<br>`--non-empty`<br>`--require-results` | `bool` | | Exit with code 3 if no results |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--max`<br>`--limit` | `int64` | 100 | Max results |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--page`<br>`--cursor` | `string` | | Page token |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog admin users](gog-admin-users.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog admin users suspend`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Suspend a user account
## Usage
```bash
gog admin users suspend <userEmail>
```
## Parent
- [gog admin users](gog-admin-users.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog admin users](gog-admin-users.md)
- [Command index](README.md)

View File

@ -0,0 +1,49 @@
# `gog admin users`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Manage Workspace users
## Usage
```bash
gog admin users <command>
```
## Parent
- [gog admin](gog-admin.md)
## Subcommands
- [gog admin users create](gog-admin-users-create.md) - Create a new user
- [gog admin users get](gog-admin-users-get.md) - Get user details
- [gog admin users list](gog-admin-users-list.md) - List users in a domain
- [gog admin users suspend](gog-admin-users-suspend.md) - Suspend a user account
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog admin](gog-admin.md)
- [Command index](README.md)

View File

@ -0,0 +1,47 @@
# `gog admin`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Google Workspace Admin (Directory API) - requires domain-wide delegation
## Usage
```bash
gog admin <command> [flags]
```
## Parent
- [gog](gog.md)
## Subcommands
- [gog admin groups](gog-admin-groups.md) - Manage Workspace groups
- [gog admin users](gog-admin-users.md) - Manage Workspace users
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog](gog.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog agent exit-codes`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Print stable exit codes for automation
## Usage
```bash
gog agent exit-codes (exitcodes,exit-code)
```
## Parent
- [gog agent](gog-agent.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog agent](gog-agent.md)
- [Command index](README.md)

View File

@ -0,0 +1,46 @@
# `gog agent`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Agent-friendly helpers
## Usage
```bash
gog agent <command> [flags]
```
## Parent
- [gog](gog.md)
## Subcommands
- [gog agent exit-codes](gog-agent-exit-codes.md) - Print stable exit codes for automation
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog](gog.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog appscript content`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Get Apps Script project content
## Usage
```bash
gog appscript (script,apps-script) content (cat) <scriptId>
```
## Parent
- [gog appscript](gog-appscript.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog appscript](gog-appscript.md)
- [Command index](README.md)

View File

@ -0,0 +1,44 @@
# `gog appscript create`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Create an Apps Script project
## Usage
```bash
gog appscript (script,apps-script) create (new) --title=STRING [flags]
```
## Parent
- [gog appscript](gog-appscript.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--parent-id` | `string` | | Optional Drive file ID to bind to |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--title` | `string` | | Project title |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog appscript](gog-appscript.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog appscript get`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Get Apps Script project metadata
## Usage
```bash
gog appscript (script,apps-script) get (info,show) <scriptId>
```
## Parent
- [gog appscript](gog-appscript.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog appscript](gog-appscript.md)
- [Command index](README.md)

View File

@ -0,0 +1,44 @@
# `gog appscript run`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Run a deployed Apps Script function
## Usage
```bash
gog appscript (script,apps-script) run <scriptId> <function> [flags]
```
## Parent
- [gog appscript](gog-appscript.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--dev-mode` | `bool` | | Run latest saved code if you own the script |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--params` | `string` | [] | JSON array of function parameters |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog appscript](gog-appscript.md)
- [Command index](README.md)

View File

@ -0,0 +1,49 @@
# `gog appscript`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Google Apps Script
## Usage
```bash
gog appscript (script,apps-script) <command> [flags]
```
## Parent
- [gog](gog.md)
## Subcommands
- [gog appscript content](gog-appscript-content.md) - Get Apps Script project content
- [gog appscript create](gog-appscript-create.md) - Create an Apps Script project
- [gog appscript get](gog-appscript-get.md) - Get Apps Script project metadata
- [gog appscript run](gog-appscript-run.md) - Run a deployed Apps Script function
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog](gog.md)
- [Command index](README.md)

View File

@ -0,0 +1,56 @@
# `gog auth add`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Authorize and store a refresh token
## Usage
```bash
gog auth add <email> [flags]
```
## Parent
- [gog auth](gog-auth.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--auth-url` | `string` | | Redirect URL from browser (manual flow; required for --remote --step 2) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `--drive-scope` | `string` | full | Drive scope mode: full\|readonly\|file |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `--extra-scopes` | `string` | | Comma-separated list of additional OAuth scope URIs to request (appended after service scopes) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--force-consent` | `bool` | | Force consent screen to obtain a refresh token |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `--gmail-scope` | `string` | full | Gmail scope mode: full\|readonly |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--listen-addr` | `string` | | Address to listen on for OAuth callback (for example 0.0.0.0 or 0.0.0.0:8080) |
| `--manual` | `bool` | | Browserless auth flow (paste redirect URL) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--readonly` | `bool` | | Use read-only scopes where available (still includes OIDC identity scopes) |
| `--redirect-host` | `string` | | Hostname for OAuth callback in browser flows; builds https://{host}/oauth2/callback |
| `--redirect-uri` | `string` | | Override OAuth redirect URI for manual/remote flows (for example https://host.example/oauth2/callback) |
| `--remote` | `bool` | | Remote/server-friendly manual flow (print URL, then exchange code) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--services` | `string` | user | Services to authorize: user\|all or comma-separated gmail,calendar,chat,classroom,drive,docs,slides,contacts,tasks,sheets,people,forms,appscript,ads (Keep uses service account: gog auth service-account set) |
| `--step` | `int` | | Remote auth step: 1=print URL, 2=exchange code |
| `--timeout` | `time.Duration` | | Authorization timeout (manual flows default to 5m) |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth](gog-auth.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog auth alias list`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
List account aliases
## Usage
```bash
gog auth alias list
```
## Parent
- [gog auth alias](gog-auth-alias.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth alias](gog-auth-alias.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog auth alias set`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Set an account alias
## Usage
```bash
gog auth alias set <alias> <email>
```
## Parent
- [gog auth alias](gog-auth-alias.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth alias](gog-auth-alias.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog auth alias unset`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Remove an account alias
## Usage
```bash
gog auth alias unset <alias>
```
## Parent
- [gog auth alias](gog-auth-alias.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth alias](gog-auth-alias.md)
- [Command index](README.md)

View File

@ -0,0 +1,48 @@
# `gog auth alias`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Manage account aliases
## Usage
```bash
gog auth alias <command>
```
## Parent
- [gog auth](gog-auth.md)
## Subcommands
- [gog auth alias list](gog-auth-alias-list.md) - List account aliases
- [gog auth alias set](gog-auth-alias-set.md) - Set an account alias
- [gog auth alias unset](gog-auth-alias-unset.md) - Remove an account alias
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth](gog-auth.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog auth credentials list`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
List stored OAuth client credentials
## Usage
```bash
gog auth credentials list
```
## Parent
- [gog auth credentials](gog-auth-credentials.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth credentials](gog-auth-credentials.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog auth credentials remove`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Remove stored OAuth client credentials
## Usage
```bash
gog auth credentials remove [<client>]
```
## Parent
- [gog auth credentials](gog-auth-credentials.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth credentials](gog-auth-credentials.md)
- [Command index](README.md)

View File

@ -0,0 +1,43 @@
# `gog auth credentials set`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Store OAuth client credentials
## Usage
```bash
gog auth credentials set <credentials> [flags]
```
## Parent
- [gog auth credentials](gog-auth-credentials.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `--domain` | `string` | | Comma-separated domains to map to this client (e.g. example.com) |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth credentials](gog-auth-credentials.md)
- [Command index](README.md)

View File

@ -0,0 +1,48 @@
# `gog auth credentials`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Manage OAuth client credentials
## Usage
```bash
gog auth credentials <command>
```
## Parent
- [gog auth](gog-auth.md)
## Subcommands
- [gog auth credentials list](gog-auth-credentials-list.md) - List stored OAuth client credentials
- [gog auth credentials remove](gog-auth-credentials-remove.md) - Remove stored OAuth client credentials
- [gog auth credentials set](gog-auth-credentials-set.md) - Store OAuth client credentials
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth](gog-auth.md)
- [Command index](README.md)

View File

@ -0,0 +1,44 @@
# `gog auth doctor`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Diagnose auth, keyring, and refresh-token issues
## Usage
```bash
gog auth doctor [flags]
```
## Parent
- [gog auth](gog-auth.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--check` | `bool` | | Verify refresh tokens by exchanging for access tokens |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--timeout` | `time.Duration` | 15s | Per-token check timeout |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth](gog-auth.md)
- [Command index](README.md)

View File

@ -0,0 +1,43 @@
# `gog auth keep`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Configure service account for Google Keep (Workspace only)
## Usage
```bash
gog auth keep --key=STRING <email>
```
## Parent
- [gog auth](gog-auth.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--key` | `string` | | Path to service account JSON key file |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth](gog-auth.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog auth keyring`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Configure keyring backend
## Usage
```bash
gog auth keyring [<backend> [<backend2>]]
```
## Parent
- [gog auth](gog-auth.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth](gog-auth.md)
- [Command index](README.md)

View File

@ -0,0 +1,44 @@
# `gog auth list`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
List stored accounts
## Usage
```bash
gog auth list [flags]
```
## Parent
- [gog auth](gog-auth.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--check` | `bool` | | Verify refresh tokens by exchanging for an access token (requires credentials.json) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--timeout` | `time.Duration` | 15s | Per-token check timeout |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth](gog-auth.md)
- [Command index](README.md)

View File

@ -0,0 +1,47 @@
# `gog auth manage`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Open accounts manager in browser
## Usage
```bash
gog auth manage (login) [flags]
```
## Parent
- [gog auth](gog-auth.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--force-consent` | `bool` | | Force consent screen when adding accounts |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--listen-addr` | `string` | | Address to listen on for OAuth callback (for example 0.0.0.0 or 0.0.0.0:8080) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--redirect-host` | `string` | | Hostname for OAuth callback; builds https://{host}/oauth2/callback |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--services` | `string` | user | Services to authorize: user\|all or comma-separated gmail,calendar,chat,classroom,drive,docs,slides,contacts,tasks,sheets,people,forms,appscript,ads (Keep uses service account: gog auth service-account set) |
| `--timeout` | `time.Duration` | 10m | Server timeout duration |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth](gog-auth.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog auth remove`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Remove a stored refresh token
## Usage
```bash
gog auth remove <email>
```
## Parent
- [gog auth](gog-auth.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth](gog-auth.md)
- [Command index](README.md)

View File

@ -0,0 +1,43 @@
# `gog auth service-account set`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Store a service account key for impersonation
## Usage
```bash
gog auth service-account set --key=STRING <email>
```
## Parent
- [gog auth service-account](gog-auth-service-account.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--key` | `string` | | Path to service account JSON key file |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth service-account](gog-auth-service-account.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog auth service-account status`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Show stored service account key status
## Usage
```bash
gog auth service-account status <email>
```
## Parent
- [gog auth service-account](gog-auth-service-account.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth service-account](gog-auth-service-account.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog auth service-account unset`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Remove stored service account key
## Usage
```bash
gog auth service-account unset <email>
```
## Parent
- [gog auth service-account](gog-auth-service-account.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth service-account](gog-auth-service-account.md)
- [Command index](README.md)

View File

@ -0,0 +1,48 @@
# `gog auth service-account`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Configure service account (Workspace only; domain-wide delegation)
## Usage
```bash
gog auth service-account <command>
```
## Parent
- [gog auth](gog-auth.md)
## Subcommands
- [gog auth service-account set](gog-auth-service-account-set.md) - Store a service account key for impersonation
- [gog auth service-account status](gog-auth-service-account-status.md) - Show stored service account key status
- [gog auth service-account unset](gog-auth-service-account-unset.md) - Remove stored service account key
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth](gog-auth.md)
- [Command index](README.md)

View File

@ -0,0 +1,43 @@
# `gog auth services`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
List supported auth services and scopes
## Usage
```bash
gog auth services [flags]
```
## Parent
- [gog auth](gog-auth.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--markdown` | `bool` | | Output Markdown table |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth](gog-auth.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog auth status`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Show auth configuration and keyring backend
## Usage
```bash
gog auth status
```
## Parent
- [gog auth](gog-auth.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth](gog-auth.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog auth tokens delete`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Delete a stored refresh token
## Usage
```bash
gog auth tokens delete <email>
```
## Parent
- [gog auth tokens](gog-auth-tokens.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth tokens](gog-auth-tokens.md)
- [Command index](README.md)

View File

@ -0,0 +1,44 @@
# `gog auth tokens export`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Export a refresh token to a file (contains secrets)
## Usage
```bash
gog auth tokens export <email> [flags]
```
## Parent
- [gog auth tokens](gog-auth-tokens.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--out`<br>`--output` | `string` | | Output file path (required) |
| `--overwrite` | `bool` | | Overwrite output file if it exists |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth tokens](gog-auth-tokens.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog auth tokens import`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Import a refresh token file into keyring (contains secrets)
## Usage
```bash
gog auth tokens import <inPath>
```
## Parent
- [gog auth tokens](gog-auth-tokens.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth tokens](gog-auth-tokens.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog auth tokens list`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
List stored tokens (by key only)
## Usage
```bash
gog auth tokens list
```
## Parent
- [gog auth tokens](gog-auth-tokens.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth tokens](gog-auth-tokens.md)
- [Command index](README.md)

View File

@ -0,0 +1,49 @@
# `gog auth tokens`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Manage stored refresh tokens
## Usage
```bash
gog auth tokens <command>
```
## Parent
- [gog auth](gog-auth.md)
## Subcommands
- [gog auth tokens delete](gog-auth-tokens-delete.md) - Delete a stored refresh token
- [gog auth tokens export](gog-auth-tokens-export.md) - Export a refresh token to a file (contains secrets)
- [gog auth tokens import](gog-auth-tokens-import.md) - Import a refresh token file into keyring (contains secrets)
- [gog auth tokens list](gog-auth-tokens-list.md) - List stored tokens (by key only)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog auth](gog-auth.md)
- [Command index](README.md)

58
docs/commands/gog-auth.md Normal file
View File

@ -0,0 +1,58 @@
# `gog auth`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Auth and credentials
## Usage
```bash
gog auth <command> [flags]
```
## Parent
- [gog](gog.md)
## Subcommands
- [gog auth add](gog-auth-add.md) - Authorize and store a refresh token
- [gog auth alias](gog-auth-alias.md) - Manage account aliases
- [gog auth credentials](gog-auth-credentials.md) - Manage OAuth client credentials
- [gog auth doctor](gog-auth-doctor.md) - Diagnose auth, keyring, and refresh-token issues
- [gog auth keep](gog-auth-keep.md) - Configure service account for Google Keep (Workspace only)
- [gog auth keyring](gog-auth-keyring.md) - Configure keyring backend
- [gog auth list](gog-auth-list.md) - List stored accounts
- [gog auth manage](gog-auth-manage.md) - Open accounts manager in browser
- [gog auth remove](gog-auth-remove.md) - Remove a stored refresh token
- [gog auth service-account](gog-auth-service-account.md) - Configure service account (Workspace only; domain-wide delegation)
- [gog auth services](gog-auth-services.md) - List supported auth services and scopes
- [gog auth status](gog-auth-status.md) - Show auth configuration and keyring backend
- [gog auth tokens](gog-auth-tokens.md) - Manage stored refresh tokens
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog](gog.md)
- [Command index](README.md)

View File

@ -0,0 +1,49 @@
# `gog backup cat`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Decrypt one backup shard to stdout
## Usage
```bash
gog backup cat <shard> [flags]
```
## Parent
- [gog backup](gog-backup.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--config` | `string` | | Backup config path |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `--identity` | `string` | | Local age identity path |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--no-pull` | `bool` | | Use local backup repository state without pulling first |
| `--out` | `string` | | Write decrypted JSONL to this file instead of stdout |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--pretty` | `bool` | | Pretty-print each JSONL row |
| `--remote` | `string` | | Backup Git remote URL |
| `--repo` | `string` | | Local backup repository path |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog backup](gog-backup.md)
- [Command index](README.md)

View File

@ -0,0 +1,50 @@
# `gog backup export`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Write a local plaintext export
## Usage
```bash
gog backup export [flags]
```
## Parent
- [gog backup](gog-backup.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--config` | `string` | | Backup config path |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-attachments` | `string` | extract | Gmail attachment export mode for markdown/both: extract or none |
| `--gmail-format` | `string` | eml | Gmail message export format: eml, markdown, or both |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `--identity` | `string` | | Local age identity path |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--no-pull` | `bool` | | Use local backup repository state without pulling first |
| `--out` | `string` | ~/Documents/gog-backup-export | Plaintext export directory |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--remote` | `string` | | Backup Git remote URL |
| `--repo` | `string` | | Local backup repository path |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog backup](gog-backup.md)
- [Command index](README.md)

View File

@ -0,0 +1,57 @@
# `gog backup gmail push`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Export Gmail into encrypted backup shards
## Usage
```bash
gog backup gmail push [flags]
```
## Parent
- [gog backup gmail](gog-backup-gmail.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--checkpoint-interval` | `time.Duration` | 30m | Max time between checkpoint pushes during fetch; 0 disables time-triggered checkpoints |
| `--checkpoint-rows` | `int` | 10000 | Gmail messages per encrypted checkpoint chunk; 0 disables row-triggered checkpoints |
| `--checkpoints` | `bool` | true | Commit and push incomplete encrypted checkpoints during long cached fetches |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--config` | `string` | | Backup config path |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-cache` | `bool` | true | Cache fetched raw messages locally so interrupted full backups can resume |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `--gmail-refresh-cache` | `bool` | | Refetch messages even when a local backup cache entry exists |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `--identity` | `string` | | Local age identity path |
| `--include-spam-trash` | `bool` | true | Include spam and trash |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--max`<br>`--limit` | `int64` | 0 | Max Gmail messages to export; 0 means all |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--no-push` | `bool` | | Commit locally but do not push to the remote |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--query` | `string` | | Gmail query for bounded/test backups |
| `--recipient` | `[]string` | | Public age recipient (repeatable) |
| `--remote` | `string` | | Backup Git remote URL |
| `--repo` | `string` | | Local backup repository path |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--shard-max-rows` | `int` | 1000 | Max messages per encrypted shard |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog backup gmail](gog-backup-gmail.md)
- [Command index](README.md)

View File

@ -0,0 +1,46 @@
# `gog backup gmail`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Gmail backup operations
## Usage
```bash
gog backup gmail <command>
```
## Parent
- [gog backup](gog-backup.md)
## Subcommands
- [gog backup gmail push](gog-backup-gmail-push.md) - Export Gmail into encrypted backup shards
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog backup](gog-backup.md)
- [Command index](README.md)

View File

@ -0,0 +1,48 @@
# `gog backup init`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Initialize encrypted backup config and repository
## Usage
```bash
gog backup init [flags]
```
## Parent
- [gog backup](gog-backup.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--config` | `string` | | Backup config path |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `--identity` | `string` | | Local age identity path |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--no-push` | `bool` | | Commit locally but do not push to the remote |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--recipient` | `[]string` | | Public age recipient (repeatable) |
| `--remote` | `string` | | Backup Git remote URL |
| `--repo` | `string` | | Local backup repository path |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog backup](gog-backup.md)
- [Command index](README.md)

View File

@ -0,0 +1,66 @@
# `gog backup push`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Export services into encrypted backup shards
## Usage
```bash
gog backup push [flags]
```
## Parent
- [gog backup](gog-backup.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--best-effort` | `bool` | true | Record optional service errors as backup rows and continue |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--config` | `string` | | Backup config path |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `--drive-binary-contents` | `bool` | | Include non-Google Drive binary file bytes in encrypted shards |
| `--drive-collaboration` | `bool` | true | Back up Drive permissions, comments, and revision metadata |
| `--drive-content-max-bytes` | `int64` | 0 | Skip individual Drive content exports larger than this many bytes; 0 means unlimited |
| `--drive-content-timeout` | `time.Duration` | 2m | Per-file Drive content export/download timeout |
| `--drive-contents` | `bool` | true | Download/export Drive file contents into encrypted shards |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-cache` | `bool` | true | Cache fetched Gmail raw messages locally so interrupted full backups can resume |
| `--gmail-checkpoint-interval` | `time.Duration` | 30m | Max time between Gmail checkpoint pushes during fetch; 0 disables time-triggered checkpoints |
| `--gmail-checkpoint-rows` | `int` | 10000 | Gmail messages per encrypted checkpoint chunk; 0 disables row-triggered checkpoints |
| `--gmail-checkpoints` | `bool` | true | Commit and push incomplete encrypted Gmail checkpoints during long cached fetches |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `--gmail-refresh-cache` | `bool` | | Refetch Gmail messages even when a local backup cache entry exists |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `--identity` | `string` | | Local age identity path |
| `--include-spam-trash` | `bool` | true | Include Gmail spam and trash |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--max`<br>`--limit` | `int64` | 0 | Max Gmail messages to export; 0 means all |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--no-push` | `bool` | | Commit locally but do not push to the remote |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--query` | `string` | | Gmail query for bounded/test backups |
| `--recipient` | `[]string` | | Public age recipient (repeatable) |
| `--remote` | `string` | | Backup Git remote URL |
| `--repo` | `string` | | Local backup repository path |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--services` | `string` | gmail | Comma-separated services to back up |
| `--shard-max-rows` | `int` | 1000 | Max rows per encrypted shard |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
| `--workspace-max-files` | `int` | 0 | Max Docs/Sheets/Slides files per type for native Workspace metadata; 0 means all |
| `--workspace-native` | `bool` | | Fetch full native Docs/Sheets/Slides API JSON in addition to Drive exports |
## See Also
- [gog backup](gog-backup.md)
- [Command index](README.md)

View File

@ -0,0 +1,48 @@
# `gog backup status`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Inspect backup manifest without decrypting shards
## Usage
```bash
gog backup status [flags]
```
## Parent
- [gog backup](gog-backup.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--config` | `string` | | Backup config path |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `--identity` | `string` | | Local age identity path |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--no-push` | `bool` | | Commit locally but do not push to the remote |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--recipient` | `[]string` | | Public age recipient (repeatable) |
| `--remote` | `string` | | Backup Git remote URL |
| `--repo` | `string` | | Local backup repository path |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog backup](gog-backup.md)
- [Command index](README.md)

View File

@ -0,0 +1,48 @@
# `gog backup verify`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Decrypt and verify all backup shards
## Usage
```bash
gog backup verify [flags]
```
## Parent
- [gog backup](gog-backup.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--config` | `string` | | Backup config path |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `--identity` | `string` | | Local age identity path |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--no-push` | `bool` | | Commit locally but do not push to the remote |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--recipient` | `[]string` | | Public age recipient (repeatable) |
| `--remote` | `string` | | Backup Git remote URL |
| `--repo` | `string` | | Local backup repository path |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog backup](gog-backup.md)
- [Command index](README.md)

View File

@ -0,0 +1,52 @@
# `gog backup`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Encrypted Google account backups
## Usage
```bash
gog backup <command> [flags]
```
## Parent
- [gog](gog.md)
## Subcommands
- [gog backup cat](gog-backup-cat.md) - Decrypt one backup shard to stdout
- [gog backup export](gog-backup-export.md) - Write a local plaintext export
- [gog backup gmail](gog-backup-gmail.md) - Gmail backup operations
- [gog backup init](gog-backup-init.md) - Initialize encrypted backup config and repository
- [gog backup push](gog-backup-push.md) - Export services into encrypted backup shards
- [gog backup status](gog-backup-status.md) - Inspect backup manifest without decrypting shards
- [gog backup verify](gog-backup-verify.md) - Decrypt and verify all backup shards
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog](gog.md)
- [Command index](README.md)

View File

@ -0,0 +1,46 @@
# `gog calendar acl`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
List calendar ACL
## Usage
```bash
gog calendar (cal) acl (permissions,perms) <calendarId> [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--all`<br>`--all-pages`<br>`--allpages` | `bool` | | Fetch all pages |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `--fail-empty`<br>`--non-empty`<br>`--require-results` | `bool` | | Exit with code 3 if no results |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--max`<br>`--limit` | `int64` | 100 | Max results |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--page`<br>`--cursor` | `string` | | Page token |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog calendar alias list`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
List calendar aliases
## Usage
```bash
gog calendar (cal) alias list
```
## Parent
- [gog calendar alias](gog-calendar-alias.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar alias](gog-calendar-alias.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog calendar alias set`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Set a calendar alias
## Usage
```bash
gog calendar (cal) alias set <alias> <calendarId>
```
## Parent
- [gog calendar alias](gog-calendar-alias.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar alias](gog-calendar-alias.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog calendar alias unset`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Remove a calendar alias
## Usage
```bash
gog calendar (cal) alias unset <alias>
```
## Parent
- [gog calendar alias](gog-calendar-alias.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar alias](gog-calendar-alias.md)
- [Command index](README.md)

View File

@ -0,0 +1,48 @@
# `gog calendar alias`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Manage calendar aliases
## Usage
```bash
gog calendar (cal) alias <command>
```
## Parent
- [gog calendar](gog-calendar.md)
## Subcommands
- [gog calendar alias list](gog-calendar-alias-list.md) - List calendar aliases
- [gog calendar alias set](gog-calendar-alias-set.md) - Set a calendar alias
- [gog calendar alias unset](gog-calendar-alias-unset.md) - Remove a calendar alias
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,46 @@
# `gog calendar calendars`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
List calendars
## Usage
```bash
gog calendar (cal) calendars [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--all`<br>`--all-pages`<br>`--allpages` | `bool` | | Fetch all pages |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `--fail-empty`<br>`--non-empty`<br>`--require-results` | `bool` | | Exit with code 3 if no results |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--max`<br>`--limit` | `int64` | 100 | Max results |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--page`<br>`--cursor` | `string` | | Page token |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog calendar colors`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Show calendar colors
## Usage
```bash
gog calendar (cal) colors
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,51 @@
# `gog calendar conflicts`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Find conflicts
## Usage
```bash
gog calendar (cal) conflicts [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--all` | `bool` | | Query all calendars |
| `--cal` | `[]string` | | Calendar ID, name, or index (can be repeated) |
| `--calendars` | `string` | | Comma-separated calendar IDs, names, or indices from 'calendar calendars' |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--days` | `int` | 0 | Next N days (timezone-aware) |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--from` | `string` | | Start time (RFC3339, date, or relative: today, tomorrow, monday) |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--to` | `string` | | End time (RFC3339, date, or relative) |
| `--today` | `bool` | | Today only (timezone-aware) |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
| `--week` | `bool` | | This week (uses --week-start, default Mon) |
| `--week-start` | `string` | | Week start day for --week (sun, mon, ...) |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,45 @@
# `gog calendar create-calendar`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Create a new secondary calendar
## Usage
```bash
gog calendar (cal) create-calendar (new-calendar) <summary> [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--description` | `string` | | Calendar description |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--location` | `string` | | Calendar location |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--timezone`<br>`--tz` | `string` | | IANA timezone (e.g., America/New_York) |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,78 @@
# `gog calendar create`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Create an event
## Usage
```bash
gog calendar (cal) create (add,new) <calendarId> [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--all-day` | `bool` | | All-day event (use date-only in --from/--to) |
| `--attachment` | `[]string` | | File attachment URL (can be repeated) |
| `--attendees` | `string` | | Comma-separated attendee emails |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--description` | `string` | | Description |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `--end-timezone`<br>`--to-timezone` | `string` | | IANA timezone metadata for --to (e.g., America/New_York) |
| `--event-color` | `string` | | Event color ID (1-11). Use 'gog calendar colors' to see available colors. |
| `--event-type` | `string` | | Event type: default, focus-time, out-of-office, working-location |
| `--focus-auto-decline` | `string` | | Focus Time auto-decline mode: none, all, new |
| `--focus-chat-status` | `string` | | Focus Time chat status: available, doNotDisturb |
| `--focus-decline-message` | `string` | | Focus Time decline message |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--from` | `string` | | Start time (RFC3339) |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `--guests-can-invite` | `*bool` | | Allow guests to invite others |
| `--guests-can-modify` | `*bool` | | Allow guests to modify event |
| `--guests-can-see-others` | `*bool` | | Allow guests to see other guests |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--location` | `string` | | Location |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--ooo-auto-decline` | `string` | | Out of Office auto-decline mode: none, all, new |
| `--ooo-decline-message` | `string` | | Out of Office decline message |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--private-prop` | `[]string` | | Private extended property (key=value, can be repeated) |
| `--reminder` | `[]string` | | Custom reminders as method:duration (e.g., popup:30m, email:1d). Can be repeated (max 5). |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--rrule` | `[]string` | | Recurrence rules (e.g., 'RRULE:FREQ=MONTHLY;BYMONTHDAY=11'). Can be repeated. |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--send-updates` | `string` | | Notification mode: all, externalOnly, none (default: none) |
| `--shared-prop` | `[]string` | | Shared extended property (key=value, can be repeated) |
| `--source-title` | `string` | | Title of the source |
| `--source-url` | `string` | | URL where event was created/imported from |
| `--start-timezone`<br>`--from-timezone` | `string` | | IANA timezone metadata for --from (e.g., Europe/Rome) |
| `--summary` | `string` | | Event summary/title |
| `--to` | `string` | | End time (RFC3339) |
| `--transparency` | `string` | | Show as busy (opaque) or free (transparent). Aliases: busy, free |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
| `--visibility` | `string` | | Event visibility: default, public, private, confidential |
| `--with-meet` | `bool` | | Create a Google Meet video conference for this event |
| `--working-building-id` | `string` | | Working location building ID |
| `--working-custom-label` | `string` | | Working location custom label |
| `--working-desk-id` | `string` | | Working location desk ID |
| `--working-floor-id` | `string` | | Working location floor ID |
| `--working-location-type` | `string` | | Working location type: home, office, custom |
| `--working-office-label` | `string` | | Working location office name/label |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,45 @@
# `gog calendar delete`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Delete an event
## Usage
```bash
gog calendar (cal) delete (rm,del,remove) <calendarId> <eventId> [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--original-start` | `string` | | Original start time of instance (required for scope=single,future) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--scope` | `string` | all | For recurring events: single, future, all |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--send-updates` | `string` | | Notification mode: all, externalOnly, none (default: none) |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,42 @@
# `gog calendar event`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Get event
## Usage
```bash
gog calendar (cal) event (get,info,show) <calendarId> <eventId>
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,61 @@
# `gog calendar events`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
List events from a calendar or all calendars
## Usage
```bash
gog calendar (cal) events (list,ls) [<calendarId> ...] [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--all` | `bool` | | Fetch events from all calendars |
| `--all-pages`<br>`--allpages` | `bool` | | Fetch all pages |
| `--cal` | `[]string` | | Calendar ID or name (can be repeated) |
| `--calendars` | `string` | | Comma-separated calendar IDs, names, or indices from 'calendar calendars' |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--days` | `int` | 0 | Next N days (timezone-aware) |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `--fail-empty`<br>`--non-empty`<br>`--require-results` | `bool` | | Exit with code 3 if no results |
| `--fields` | `string` | | Comma-separated fields to return |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--from` | `string` | | Start time (RFC3339 with timezone, date, or relative: today, tomorrow, monday) |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--max`<br>`--limit` | `int64` | 10 | Max results |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--page`<br>`--cursor` | `string` | | Page token |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--private-prop-filter` | `string` | | Filter by private extended property (key=value) |
| `--query` | `string` | | Free text search |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--shared-prop-filter` | `string` | | Filter by shared extended property (key=value) |
| `--to` | `string` | | End time (RFC3339 with timezone, date, or relative) |
| `--today` | `bool` | | Today only (timezone-aware) |
| `--tomorrow` | `bool` | | Tomorrow only (timezone-aware) |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
| `--week` | `bool` | | This week (uses --week-start, default Mon) |
| `--week-start` | `string` | | Week start day for --week (sun, mon, ...) |
| `--weekday` | `bool` | false | Include start/end day-of-week columns |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,49 @@
# `gog calendar focus-time`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Create a Focus Time block
## Usage
```bash
gog calendar (cal) focus-time (focus) --from=STRING --to=STRING [<calendarId>] [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--auto-decline` | `string` | all | Auto-decline mode: none, all, new |
| `--chat-status` | `string` | doNotDisturb | Chat status: available, doNotDisturb |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--decline-message` | `string` | | Message for declined invitations |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--from` | `string` | | Start time (RFC3339) |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--rrule` | `[]string` | | Recurrence rules. Can be repeated. |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--summary` | `string` | Focus Time | Focus time title |
| `--to` | `string` | | End time (RFC3339) |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,46 @@
# `gog calendar freebusy`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Get free/busy
## Usage
```bash
gog calendar (cal) freebusy [<calendarIds>] [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--all` | `bool` | | Query all calendars |
| `--cal` | `[]string` | | Calendar ID, name, or index (can be repeated) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--from` | `string` | | Start time (RFC3339, required) |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--to` | `string` | | End time (RFC3339, required) |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,43 @@
# `gog calendar move`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Move an event to another calendar
## Usage
```bash
gog calendar (cal) move (transfer) <calendarId> <eventId> <destinationCalendarId> [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--send-updates` | `string` | | Notification mode: all, externalOnly, none (default: none) |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,48 @@
# `gog calendar out-of-office`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Create an Out of Office event
## Usage
```bash
gog calendar (cal) out-of-office (ooo) --from=STRING --to=STRING [<calendarId>] [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--all-day` | `bool` | | Create as all-day event |
| `--auto-decline` | `string` | all | Auto-decline mode: none, all, new |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--decline-message` | `string` | I am out of office and will respond when I return. | Message for declined invitations |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--from` | `string` | | Start date or datetime (RFC3339 or YYYY-MM-DD) |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--summary` | `string` | Out of office | Out of office title |
| `--to` | `string` | | End date or datetime (RFC3339 or YYYY-MM-DD) |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,45 @@
# `gog calendar propose-time`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Generate URL to propose a new meeting time (browser-only feature)
## Usage
```bash
gog calendar (cal) propose-time <calendarId> <eventId> [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--comment` | `string` | | Comment to include with decline (implies --decline) |
| `--decline` | `bool` | | Also decline the event (notifies organizer) |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `--open` | `bool` | | Open the URL in browser automatically |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,43 @@
# `gog calendar raw`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Dump raw Google Calendar API response as JSON (Events.Get; lossless; for scripting and LLM consumption)
## Usage
```bash
gog calendar (cal) raw <calendarId> <eventId> [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--pretty` | `bool` | | Pretty-print JSON (default: compact single-line) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

View File

@ -0,0 +1,44 @@
# `gog calendar respond`
> Generated from `gog schema --json`. Do not edit this page by hand; run `make docs-commands`.
Respond to an event invitation
## Usage
```bash
gog calendar (cal) respond (rsvp,reply) <calendarId> <eventId> [flags]
```
## Parent
- [gog calendar](gog-calendar.md)
## Flags
| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--access-token` | `string` | | Use provided access token directly (bypasses stored refresh tokens; token expires in ~1h) |
| `-a`<br>`--account`<br>`--acct` | `string` | | Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/ads) |
| `--client` | `string` | | OAuth client name (selects stored credentials + token bucket) |
| `--color` | `string` | auto | Color output: auto\|always\|never |
| `--comment` | `string` | | Optional comment/note to include with response |
| `--disable-commands` | `string` | | Comma-separated list of disabled commands; dot paths allowed |
| `-n`<br>`--dry-run`<br>`--dryrun`<br>`--noop`<br>`--preview` | `bool` | | Do not make changes; print intended actions and exit successfully |
| `--enable-commands` | `string` | | Comma-separated list of enabled commands; dot paths allowed (restricts CLI) |
| `-y`<br>`--force`<br>`--assume-yes`<br>`--yes` | `bool` | | Skip confirmations for destructive commands |
| `--gmail-no-send` | `bool` | false | Block Gmail send operations (agent safety) |
| `-h`<br>`--help` | `kong.helpFlag` | | Show context-sensitive help. |
| `-j`<br>`--json`<br>`--machine` | `bool` | false | Output JSON to stdout (best for scripting) |
| `--no-input`<br>`--non-interactive`<br>`--noninteractive` | `bool` | | Never prompt; fail instead (useful for CI) |
| `-p`<br>`--plain`<br>`--tsv` | `bool` | false | Output stable, parseable text to stdout (TSV; no colors) |
| `--results-only` | `bool` | | In JSON mode, emit only the primary result (drops envelope fields like nextPageToken) |
| `--select`<br>`--pick`<br>`--project` | `string` | | In JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands. |
| `--status` | `string` | | Response status (accepted, declined, tentative, needsAction) |
| `-v`<br>`--verbose` | `bool` | | Enable verbose logging |
| `--version` | `kong.VersionFlag` | | Print version and exit |
## See Also
- [gog calendar](gog-calendar.md)
- [Command index](README.md)

Some files were not shown because too many files have changed in this diff Show More