mrkeyoor.com_
Fri 16 Oct 18:53 UTC
Automationevaluationupdated 11 Oct 2026

cli review

Google Workspace CLI, invoked as gws, lets scripts and assistants read and change Google services such as Drive, Gmail, Calendar, and Sheets. It turns Google's API descriptions into terminal commands with JSON output, saving you from writing a separate HTTP wrapper for each service.

+242stars / 7d
Verdict

Our Google Workspace CLI run installed 104 packages in 7 seconds and used 36 MB, then its test command stopped because Cargo was missing. Use it for inspectable Workspace scripts if you can handle OAuth setup and pin a version against the documented breaking changes. Keep direct API integrations for critical Calendar conversions or contacts writes until the operations reported in issues 951 and 673 work for your use case.

We ran it

Lab card: what happened when we ran cliScreenshot of cli (developers.google.com/workspace)
Install✓ · 7s104 packages · 36 MB
Buildn/ano build script
Tests✗ · 2sran, 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 7 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?

Teams requiring officially supported Google tooling or stable command behavior: the README disclaims official product support and warns of breaking changes before v1.0.

What are the alternatives to cli?

GAM, rclone, Google APIs Node.js Client. Our Google Workspace CLI run installed 104 packages in 7 seconds and used 36 MB, then its test command stopped because Cargo was missing.

Setup3/57-second package install; OAuth setup and Cargo need separate attention
Docs4/5Useful auth, scope, headless, and Rust development instructions
Community4/5October push and specific recent API reports show activity
Maturity2/5Breaking-change warning; Calendar and contacts reports remain open

Discussed on

  1. hnGoogle Workspace CLI953 points

Who it’s for

Developers writing shell scripts that cross Workspace services and need JSON they can inspect.
Teams with an existing Google Cloud project who can choose OAuth scopes and manage credentials.
Agent builders who want Workspace skills and can review requests before granting write access.
Rust contributors prepared to use Cargo for the source checks.

Who it’s NOT for

Teams requiring officially supported Google tooling or stable command behavior: the README disclaims official product support and warns of breaking changes before v1.0.
Developers expecting the full recommended login preset to work with an unverified OAuth app: the README says it exceeds the testing-mode consent limit.
Calendar integrations that depend on clearing date fields during event conversion: open issue 951 reports JSON null being rejected in 0.22.5.
Contacts applications expecting the People login preset to grant write access: open issue 673 reports the required contacts scope missing in 0.22.5.

Setup reality

Our sandbox installed commit a3768d0 in 7 seconds: 104 pnpm packages, 36 MB on disk. There was no build script or target, so the build step was skipped. Tests failed after 2 seconds with exit code 1: the package invoked cargo test, and the shell reported cargo: not found.

Workspace access needs a Google account and configured credentials. The OAuth route needs a Google Cloud project; guided setup requires gcloud, or you can configure a Desktop app client manually. Headless use accepts a credential file or an existing access token. Choose service scopes carefully: the README warns that the recommended preset fails for unverified apps.

The measured lab-node:22 environment had 3 CPUs, 8 GB of RAM, and no secrets. The application is written in Rust, while npm downloads its binary. The README documents Cargo for source work and recommends release binaries for users. Our Node-based source run did not establish whether the Rust suite passes or authenticated API calls work.

Runtime discovery saves you from writing another API wrapper

Before you let an agent send a Gmail message, gws can show the request with --dry-run. That makes Google Workspace CLI worth considering for scripts that cross Google services: list a Drive file, append a spreadsheet row, then post a Chat message. Its commands come from Google's Discovery documents, and responses arrive as JSON. The tool saves you from assembling each HTTP call yourself.

Our checkout occupied 2.4 MB before installation, with 222 files and roughly 32,493 source lines. Alongside generated API commands, helpers such as gmail +reply handle a specific workflow. Agent skills describe those operations to assistants. I would start with a narrow, repeatable task whose output you can check, such as reading spreadsheet values, before granting permission to change mail or calendars.

What happened when we ran it

Our sandbox installed commit a3768d0 in 7 seconds, adding 104 pnpm packages and using 36 MB on disk. We ran it on October 2, 2026, in a fresh, unprivileged Debian container with 3 CPUs, 8 GB of RAM, the lab-node:22 image, and no secrets. The install succeeded. The harness found no build script or target, so it skipped that step. No build was measured.

The test command failed after 2 seconds with exit code 1. The log identifies @googleworkspace/cli@0.22.5, then shows the package invoking cargo test. The shell answered cargo: not found, followed by pnpm's lifecycle failure. Cargo was unavailable in that environment, so the command stopped before it could establish whether the Rust tests pass. Calling this a failed assertion would misread the evidence.

The scan found 11 CI workflow files, no Dockerfile, and no tests directory. They don't establish test counts or passing upstream checks. Our measurement method covered the supplied install and test commands without Google credentials. Authenticated Workspace operations remain unverified. A successful package install alone cannot tell you whether a Gmail or Drive request will work.

OAuth setup requires a Cloud project and deliberate scope choices

The README requires a Google Cloud project for OAuth credentials and an account with Workspace access. Its guided gws auth setup route also requires gcloud; the alternative is manual console configuration with a Desktop app OAuth client and your account added as a test user. If your organization controls project creation or application consent, involve its administrator before choosing this CLI for a scheduled job.

The 7-second install in our sandbox excludes that credential work. Headless use can take exported credentials through GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE, while an existing access token can come through GOOGLE_WORKSPACE_CLI_TOKEN. The README warns that the recommended scope preset exceeds the consent limit for unverified apps. Select the services you actually need. Exported credentials belong in your secret-handling process, and a login that succeeds still needs a representative API request to confirm access.

The npm entry point wraps a Rust program

The 104 packages installed in our run do not describe a JavaScript-only contributor environment. GitHub identifies Rust as the primary language, and the README's development commands use Cargo. For ordinary use, the documented default is a platform-specific release binary; npm automates downloading that binary. The source checkout and the packaged application are different routes. Choose the release artifact if your goal is running Workspace commands rather than editing the CLI.

The release page lists v0.22.5 and describes checksum verification in the npm download path. That is useful distribution detail, but it does not turn our missing-Cargo result into a passing suite. A contributor should read the Rust development instructions before reproducing the repository checks. The README does mention Cargo, so this failure is a mismatch between our Node sandbox and the source test command, rather than an undocumented tool requirement.

Calendar edits and contacts writes have specific open reports

In Calendar issue 951, a user of 0.22.5 reports that schema validation rejects JSON null when converting an all-day event into a timed event. The report includes a dry-run reproduction and suggests a full update as a workaround. This matters if your integration edits existing events: a generated command surface does not guarantee that every valid API operation survives local validation. We did not reproduce this report in our sandbox.

Contacts issue 673 also names 0.22.5 and reports that the People service login omits the scope needed to create contacts. The author's workaround uses a separate contacts-only token with direct API calls. These reports give calendar and contacts developers concrete cases to check before adoption. If those writes are central to your application, I would keep the existing API integration until the exact operations work with your credential configuration.

An October push shows activity despite the March release

The repository's last push was October 6, 2026; the latest release was v0.22.5, published March 31. GitHub listed 31,325 stars and 134 open issues and PRs on October 11, with recent Calendar and authentication reports among the activity. That supports an active-project judgment, not an abandonment claim based on the release date. Still, the README explicitly warns of breaking changes before v1.0 and disclaims official Google product support. Pin the version for recurring jobs.

GAM and rclone are better picks for narrower jobs

GAM targets Workspace administrators managing domain and user settings. rclone handles cloud file transfers and supports Google Drive. Pick the tool whose purpose matches the job before choosing gws for its service coverage. For an application written in Node, the Google APIs client keeps requests inside your program instead of passing them through a subprocess.

Google Workspace CLI earned a trial with its 36 MB installed footprint, but our source checks stopped at missing Cargo. I'd use it for inspectable scripts with limited permissions and pinned versions. If your first task is changing an all-day Calendar event or creating a contact, use those open reports as your acceptance cases. Do that before the script gets its schedule and write access.

Alternatives

ProjectWhat it isPick it when
GAMA command-line tool for Workspace domain and user administration.pick this instead when managing an organization's accounts and settings is the main job.
rclone gh↗A cloud file-transfer and synchronization tool with Google Drive support.pick this instead when moving or synchronizing Drive files is the whole requirement.
Google APIs Node.js ClientGoogle's supported Node client for API requests and authentication, with TypeScript types.pick this instead when Workspace calls belong inside a Node application rather than shell commands.

What people are saying

  1. [hackernews] Once: Cache CLI Commands
  2. [producthunt] NOVA CLI v1.0
  3. [github-trending] stripe/stripe-cli
  4. [github-trending] npm/cli
  5. [lobsters] Flatpak from the CLI sucks
  6. [github-trending] urfave/cli

Sources

  1. Google Workspace CLI README
  2. Google Workspace CLI repository activity
  3. Google Workspace CLI v0.22.5 release
  4. Calendar PATCH null validation report
  5. People authentication missing contacts write scope
  6. GAM project
  7. rclone project
  8. Google APIs Node.js Client

More automation reviews

supersidian · genspark-claw · orc-claude-plugin · tiktok-views-bot · Ydisks-Xianyu-Helper · jev-gui-delegate · the whole board →