gmail — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited gmail (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Search, read, send, and manage Gmail messages, drafts, labels, and filters using the gws CLI.
Do NOT check authentication upfront. Just run the command. If it fails with an auth error (exit code 2), see the Self-Healing section for diagnostics.
All operations use the gws CLI directly. No wrapper scripts.
+): Use for common operations. These handle formatting, threading, and MIME encoding automatically.--params '<JSON>' and request bodies via --json '<JSON>'. Resource paths are space-separated (e.g., gws gmail users messages list).Always prefer + helpers when one exists for the operation.
Show unread inbox summary:
gws gmail +triageFiltered/customized:
gws gmail +triage --query 'from:boss' --max 5
gws gmail +triage --labels
gws gmail +triage --format tablegws gmail +read --id <messageId>
gws gmail +read --id <messageId> --headers
gws gmail +read --id <messageId> --format jsongws gmail users messages list --params '{"userId": "me", "q": "<query>"}'See gmail-search-recipes.md for query syntax.
gws gmail users labels list --params '{"userId": "me"}'gws gmail +send --to <addr> --subject '<subj>' --body '<body>'
gws gmail +send --to <addr> --subject '<subj>' --body '<body>' --cc <addr> --bcc <addr>
gws gmail +send --to <addr> --subject '<subj>' --body '<body>' -a <filepath>
gws gmail +send --to <addr> --subject '<subj>' --body '<html>' --htmlgws gmail +reply --message-id <id> --body '<body>'gws gmail +reply-all --message-id <id> --body '<body>'
gws gmail +reply-all --message-id <id> --body '<body>' --remove <addr>gws gmail +forward --message-id <id> --to <addr>
gws gmail +forward --message-id <id> --to <addr> --body 'FYI see below'gws gmail users drafts create --params '{"userId": "me"}' --json '<draft-json>'gws gmail users messages trash --params '{"userId": "me", "id": "<id>"}'
gws gmail users messages delete --params '{"userId": "me", "id": "<id>"}'Trash is reversible. Delete is permanent — confirm with the user first.
gws gmail users messages modify --params '{"userId": "me", "id": "<id>"}' --json '{"addLabelIds": ["STARRED"], "removeLabelIds": ["UNREAD"]}'gws gmail users labels create --params '{"userId": "me"}' --json '{"name": "<label-name>"}'
gws gmail users labels delete --params '{"userId": "me", "id": "<labelId>"}'gws gmail users settings filters list --params '{"userId": "me"}'
gws gmail users settings filters create --params '{"userId": "me"}' --json '<filter-json>'
gws gmail users settings filters delete --params '{"userId": "me", "id": "<filterId>"}'See gmail-search-recipes.md
When a command fails:
Check if gws is available and authenticated:
which gws && gws auth statusIf gws is not installed or not authenticated, tell the user:
"The gws CLI is not installed or not authenticated. Install and configure it: https://github.com/googleworkspace/cli"
gws gmail <command> --helpgws schema gmail.<resource>.<method>--dry-run to preview requests without executing--params JSON syntax and required fields+ helper commands over raw API calls when a helper exists.--format table for human-readable output when needed.--dry-run to preview destructive operations before executing.userId to me in --params unless the user specifies otherwise.+triage.users messages list.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.