mrkeyoor.com_
Tue 01 Sept 17:40 UTC
Automationevaluationupdated 27 Aug 2026

cli review

Google Workspace CLI, invoked as `gws`, turns Drive, Gmail, Calendar, Sheets, Docs, Chat, Admin, and other Workspace APIs into JSON-producing terminal commands. It builds most of its command tree from Google's Discovery documents and includes agent skills, so scripts and coding agents can use Workspace without a separate wrapper for each service.

+79 / 4dstars / 7d
Verdict

Our googleworkspace/cli install took 10 seconds and 36 MB, but its test command failed in 6 seconds because Cargo was absent from the Node image. The prebuilt binary is a strong fit for engineers automating several Workspace APIs who can keep OAuth scopes narrow and verify every mutating helper. Avoid treating it as a stable, officially supported admin layer before v1.0, especially for email recipient handling or complete calendar reporting.

We ran it

Lab card: what happened when we ran cliScreenshot of cli (developers.google.com/workspace)
Install✓ · 10s104 packages · 36 MB
Buildn/ano build script
Tests✗ · 6sran, no count parsed
Repo222 files~32,493 lines of source · 2.4 MB · 11 CI workflows

Answers from our run

Does cli build from source?

Dependencies installed in 10 seconds (104 packages), and the project has no separate build step. We cloned commit a3768d0 into a clean Debian container with 3 CPUs and no project-specific setup.

Do cli's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use cli?

Organizations requiring an officially supported Google product: the README explicitly says this is not one.

What are the alternatives to cli?

GAM, Google API Python Client. Our googleworkspace/cli install took 10 seconds and 36 MB, but its test command failed in 6 seconds because Cargo was absent from the Node image.

Setup3/5Fast pnpm install; Google OAuth setup is the larger job
Docs5/5Auth paths, helpers, schemas, exit codes, and limits are explicit
Community4/530,591 stars with August 2026 issue and pull request activity
Maturity3/5Broad command set, but pre-v1 breaking changes and helper bugs remain

Discussed on

  1. hnGoogle Workspace CLI953 points

Who it’s for

Developers automating several Google Workspace services from shell scripts or CI.
AI-agent operators who want structured JSON, dry runs, schema inspection, and narrowly installed Workspace skills.
Administrators willing to create a Cloud project and manage OAuth scopes or service-account credentials.
Rust contributors who can install the source toolchain even when they use pnpm for the package wrapper.

Who it’s NOT for

Organizations requiring an officially supported Google product: the README explicitly says this is not one.
Scripts that cannot absorb breaking command changes before v1.0: the README warns users to expect them, and the command surface is built from live Discovery documents.
Unverified OAuth apps that want the broad recommended scope set: Google limits testing-mode consent to about 25 scopes, while the preset requests more than 85.
Teams sending unattended +reply-all email without verification: open issue 911 reports that v0.22.5 silently drops original CC recipients.
Calendar automation that treats +agenda as a complete ledger: issue 900 reports ignored pagination and silent partial results at the measured commit.

Setup reality

Our pnpm install succeeded in 10 seconds, adding 104 packages and using 36 MB. There was no build script or target. Tests failed with exit code 1 after 6 seconds because the package ran cargo test and the shell returned cargo: not found.

Actual API calls need a Google account, a Cloud project, enabled services, and OAuth credentials, a service-account file, or an access token. Automated gws auth setup also requires gcloud; manual desktop OAuth is documented as the alternative.

The 2.4 MB checkout had 222 files, about 32,493 source lines, and 11 CI workflows, but no Dockerfile or tests directory. The npm package is a convenience installer for the Rust binary, so source contributors need Cargo even though package installation uses pnpm.

One binary exposes Workspace APIs as structured commands

gws covers Drive, Gmail, Calendar, Sheets, Docs, Chat, Admin, and other Google Workspace services from one command. It returns structured JSON for successes and errors, can stream paginated pages as NDJSON, and assigns distinct exit codes to API, authentication, validation, Discovery, and internal failures. Humans get command help and --dry-run; agents get schema inspection plus installable skills for service-specific work.

Most commands are generated at runtime from Google's Discovery Service instead of being compiled into a fixed list. The CLI identifies the requested service, fetches its document, caches it for 24 hours, builds the argument tree, and then parses the remaining command. That is a sensible way to cover a large API family. It also means Google's published schema can change the available surface without a new gws release, so durable scripts should pin assumptions with smoke tests.

Authentication is a Cloud project task, not one login command

The shortest local route uses gws auth setup, but that path depends on an authenticated gcloud installation to create or configure the project. Manual setup requires an OAuth consent screen, a desktop client, a downloaded client JSON file, and the user added to the test-user list. Service accounts and pre-obtained access tokens are supported for servers and CI. None of these choices removes the need to enable the requested Google APIs.

Scope selection deserves restraint. The README says unverified testing-mode apps are limited to about 25 consent scopes, while its recommended preset contains more than 85. Selecting only Drive, Gmail, or other required services is both more likely to work and easier to defend. Interactive credentials use AES-256-GCM, with the key in the operating-system keyring or a local file when the file backend is selected. Headless export writes unmasked credentials, which should be handled as a secret.

What happened when we ran it

Our sandbox installed commit a3768d0 with pnpm in 10 seconds. The operation added 104 packages and used 36 MB on disk. There was no build script or target, so the build step was skipped. The test command failed with exit code 1 after 6 seconds. Its complete error was direct: the package invoked cargo test, and the shell reported cargo: not found.

That failure does not show a failing Rust assertion. It shows that the Node 22 container used for our run lacked the Rust command required by the project's npm test script. The repository's development section tells contributors to use cargo build, Clippy, and cargo test, while the recommended user path is a prebuilt binary or an npm package that downloads one. Source contributors should install the Rust toolchain before expecting the pnpm test command to work.

The checkout contained 222 files, roughly 32,493 source lines, and occupied 2.4 MB. Our scan found 11 CI workflow files, no Dockerfile, and no tests directory. The last signal does not establish that Rust tests are absent, only that the scanner found no conventional folder and our command could not start Cargo. A proper source evaluation still needs the suite rerun in the documented toolchain.

Convenience helpers need output checks before they mutate data

The raw Discovery commands sit beside hand-written helpers such as Gmail send and reply, Calendar agenda, Drive upload, and multi-service workflows. Helpers save tedious request construction. They also contain behavior that cannot be inherited automatically from Google's schema, so they deserve their own regression fixtures for recipients, pagination, time zones, and partial failures.

Open issue 911, filed August 24, 2026 against v0.22.5, reports that Gmail +reply-all sends to the original sender but silently omits CC recipients. Issue 900 reports that +agenda ignores pagination for calendar lists and events at commit a3768d0, caps one request at 50 results, and converts some errors into empty results. Both commands can return plausible output while leaving something out. Preview mutating calls and verify sent-message headers or calendar counts after execution.

Authentication also has an open state problem. Issue 876 describes a fresh login that appeared to grant Drive scopes while API calls continued using stale cached state and returned 403. The reporter recovered by removing credential and token-cache files before logging in again. That report was updated August 25. It does not mean every reauthentication fails, but CI should distinguish missing scopes from disabled APIs and stale local state rather than retrying a mutating command blindly.

August activity is current, while v0.22.5 remains pre-v1

GitHub showed 30,591 stars and 127 combined issues and pull requests when fetched. The repository was pushed August 25, 2026, and work on a skills-sync pull request continued that day. The latest release endpoint returned v0.22.5 from March 31, 2026. Current pushes and issue activity make that older tag poor evidence of abandonment; the README itself says development is active and breaking changes are expected on the way to v1.0.

The Apache-2.0 license is easy to evaluate, but the project disclaimer matters: this is not an officially supported Google product. For personal automation and engineering-owned workflows, its JSON interface, schema command, dry runs, and multiple authentication paths make it useful. For audited administration, add version pinning, least-privilege scopes, post-action verification, and an escalation path that does not depend on community support alone.

Alternatives

ProjectWhat it isPick it when
GAMA long-running command-line tool focused on Google Workspace administration.pick this instead when domain administration and bulk user or group operations matter more than agent skills and Discovery-generated commands.
Google API Python ClientGoogle's Python client for calling Discovery-based APIs from application code.pick this instead when you need typed application logic, custom retries, and direct control rather than shell-oriented JSON commands.

What people are saying

  1. [github-trending] docker/cli
  2. [github-trending] googleworkspace/cli
  3. [producthunt] Ticket Fairy CLI
  4. [velocity-scout] angular/angular-cli
  5. [github-trending] stripe/link-cli
  6. [github-trending] aws/agentcore-cli

Sources

  1. Google Workspace CLI README
  2. Google Workspace CLI repository facts
  3. Google Workspace CLI v0.22.5
  4. Issue 911: reply-all drops CC recipients
  5. Issue 900: agenda returns incomplete results
  6. Issue 876: stale token cache

More automation reviews

rclone · lego · OpenCLI · web-access · Karabiner-Elements · WiiUDownloader · the whole board →