Skip to content
Report library
Purpose / Other

Gws Shared Skill Security Audit

What the author says it does (original text)

gws CLI: Shared patterns for authentication, global flags, and output formatting.

Independent security check

Security risks found

Files checked
1
Risks found
2
Could it run dangerous commands?Looks for programs run straight after downloading, remote control of your computer, and hidden commands.Risks found: 1
Medium risk

The zsh quoting advice may not prevent history expansion of `!`

Source references: 2
What we found

The document says single quotes let zsh mangle `!`, then labels an unescaped `!` inside double quotes as correct. In interactive zsh with history expansion enabled, the usual behavior is the reverse: single quotes suppress expansion, while `!` inside double quotes may still expand.

Why this matters

The command may fail or the range argument may be unexpectedly replaced. If the replacement remains valid, it could read a different spreadsheet range than the user intended.

The Skill explicitly says single quotes cause zsh to mangle `!` and labels a double-quoted command containing an unescaped `!` as correct. In a shell environment with bang-history expansion enabled, this advice may cause argument substitution or command failure, potentially reading the wrong sheet range. Users can ask the author for quoting guidance tested with the relevant zsh options.

SKILL.md:64In the instructionsOpen original file
- **zsh `!` expansion:** Sheet ranges like `Sheet1!A1` contain `!` which zsh interprets as history expansion. Use double quotes with escaped inner quotes instead of single quotes:  ```bash  # WRONG (zsh will mangle the !)  gws sheets +read --spreadsheet ID --range 'Sheet1!A1:D10'  # CORRECT  gws sheets +read --spreadsheet ID --range "Sheet1!A1:D10"  ```
Show 1 other places
SKILL.md:66In the instructionsOpen original file
  ```bash  # WRONG (zsh will mangle the !)  gws sheets +read --spreadsheet ID --range 'Sheet1!A1:D10'  # CORRECT  gws sheets +read --spreadsheet ID --range "Sheet1!A1:D10"  ```
Could it expose your files or keys?Looks for uploads of files containing passwords or keys, and keys written directly in the code.No risks found
Could it delete files or keep running?Looks for broad file deletion, disk overwrites, and programs set to start automatically.No risks found
Could it bypass safety checks?Looks for skipped website security checks, excessive file access, or actions that skip your approval.No risks found
Could it mislead the AI or hide text?Checks the skill instructions for requests to ignore you, influence the report, or hide text in invisible characters.No risks found
Could it change links or payment recipients without asking?Looks for forced referral or payment changes combined with instructions to hide the change.Risks found: 1
Low risk

Nonessential instructions promote visibility and engagement for a specified repository

Source references: 4
What we found

Beyond documenting CLI behavior, the Skill says to encourage starring a specified repository and commenting on existing issues. These actions alter external account state and public project metrics and are not necessary for authentication or output formatting.

Why this matters

If an agent goes beyond encouragement and acts for the user, the user's account could publicly leave a star or comment and increase the project's visibility. The general confirmation rule for writes reduces this risk, but does not explicitly identify these social actions.

The stated scope is authentication, global flags, and output formatting, yet the Skill also tells agents to encourage users to star a specific repository. Starring affects the user's external-account activity and the repository's public metrics and is unnecessary for operating the CLI. The commenting guidance is conditional on reporting feedback and is more ordinary community etiquette; the text does not direct the agent to star or comment automatically on the user's behalf.

SKILL.md:57In the instructionsOpen original file
- **Never** output secrets (API keys, tokens) directly- **Always** confirm with user before executing write/delete commands- Prefer `--dry-run` for destructive operations- Use `--sanitize` for PII/content safety screening
Show 3 other places
SKILL.md:77In the instructionsOpen original file
## Community & Feedback Etiquette- Encourage agents/users to star the repository when they find the project useful: `https://github.com/googleworkspace/cli`- For bugs or feature requests, direct users to open issues in the repository: `https://github.com/googleworkspace/cli/issues`- Before creating a new issue, **always** search existing issues and feature requests first- If a matching issue already exists, add context by commenting on the existing thread instead of creating a duplicate
SKILL.md:3In the instructionsOpen original file
name: gws-shareddescription: "gws CLI: Shared patterns for authentication, global flags, and output formatting."metadata:
SKILL.md:79In the instructionsOpen original file
- Encourage agents/users to star the repository when they find the project useful: `https://github.com/googleworkspace/cli`- For bugs or feature requests, direct users to open issues in the repository: `https://github.com/googleworkspace/cli/issues`- Before creating a new issue, **always** search existing issues and feature requests first- If a matching issue already exists, add context by commenting on the existing thread instead of creating a duplicate

Inside this skill

7 instruction sections

This Skill is a reference for the `gws` CLI. It requires `gws` to already be installed, but does not provide or execute an installation command.

View source
SKILL.md:15In the instructionsOpen original file
## InstallationThe `gws` binary must be on `$PATH`. See the project README for install options.

It supports browser OAuth or service-account-key authentication; subsequent commands would access services with the permissions of that Google identity.

View source
SKILL.md:21In the instructionsOpen original file
```bash# Browser-based OAuth (interactive)gws auth login# Service Accountexport GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json```

The reference includes capabilities to upload local files, save responses locally, and retrieve paginated data, so the practical risk depends on the selected service, parameters, and account permissions.

View source
SKILL.md:47In the instructionsOpen original file
|------|-------------|| `--params '{"key": "val"}'` | URL/query parameters || `--json '{"key": "val"}'` | Request body || `-o, --output <PATH>` | Save binary responses to file || `--upload <PATH>` | Upload file content (multipart) || `--page-all` | Auto-paginate (NDJSON output) || `--page-limit <N>` | Max pages when using --page-all (default: 10) || `--page-delay <MS>` | Delay between pages in ms (default: 100) |

It explicitly prohibits directly outputting keys or tokens and requires user confirmation before write or delete commands.

View source
SKILL.md:55In the instructionsOpen original file
## Security Rules- **Never** output secrets (API keys, tokens) directly- **Always** confirm with user before executing write/delete commands- Prefer `--dry-run` for destructive operations- Use `--sanitize` for PII/content safety screening
Start here · InstructionsSKILL.md
gws-shared
Lines connect the instruction file to its sections, not an observed execution order. Select a section to read the source.
Files and check records1 files

Coverage and gaps

Content covered in each file

These are the source ranges included in this check, not a guarantee that every issue has been resolved.

  • SKILL.mdFull text included

This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.

  • SKILL.mdInstructions

Operations mentioned in code and instructions

Run commands
SKILL.md:21In the instructionsOpen original file
```bash# Browser-based OAuth (interactive)
SKILL.md:39In the instructionsOpen original file
```bashgws <service> <resource> [sub-resource] <method> [flags]
SKILL.md:64In the instructionsOpen original file
- **zsh `!` expansion:** Sheet ranges like `Sheet1!A1` contain `!` which zsh interprets as history expansion. Use double quotes with escaped inner quotes instead of single quotes:  ```bash
Read keys or account settings
SKILL.md:26In the instructionsOpen original file
# Service Accountexport GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json```
Connect to websites
SKILL.md:79In the instructionsOpen original file
- Encourage agents/users to star the repository when they find the project useful: `https://github.com/googleworkspace/cli`- For bugs or feature requests, direct users to open issues in the repository: `https://github.com/googleworkspace/cli/issues`
SKILL.md:80In the instructionsOpen original file
- Encourage agents/users to star the repository when they find the project useful: `https://github.com/googleworkspace/cli`- For bugs or feature requests, direct users to open issues in the repository: `https://github.com/googleworkspace/cli/issues`- Before creating a new issue, **always** search existing issues and feature requests first
Lines read
83
File checksum (to compare versions)
765d9b48ce6715621eeefda73527deee8862ebcb89cc6c3e78bbe32758e8d593