{"data":{"skill":{"slug":"googleworkspace-gws-gmail-watch","name":"gws-gmail-watch","icon":"📦","repo":"https://github.com/googleworkspace/cli/tree/main/skills/gws-gmail-watch/","status":"approved","author":"googleworkspace","authorVersion":"0.23.0","skillstoreRevision":2},"audit":{"id":"3cd16890-cc46-4be2-b3e7-8f2ebf60fed4","skill_id":"45612f28-3341-4300-af67-2ddedcb947c7","version":7,"content_hash":"v3:286d37c9c189ddd1aafd3548415fb031d1df79d5:e24731916da25e0530da499c5b08cb3258b5a706cdd98f5169666ff5c76661fd:56abfecc3dbaae9db68a8c1c690e8de4b1534de6f1be30e6f088aeea11f64ec6:736b696c6c732f676f6f676c65776f726b73706163652f6777732d676d61696c2d7761746368:9ffce711ef37fb03583597b9a6ea2eaf","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 17 static findings are false positives caused by Markdown code formatting and fixed sibling documentation links. The reviewed skill contains no shell backtick execution, path traversal behavior, prompt injection, or malicious intent.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":24,"line_start":22},{"file":"SKILL.md","line_end":30,"line_start":24},{"file":"SKILL.md","line_end":31,"line_start":30},{"file":"SKILL.md","line_end":32,"line_start":31},{"file":"SKILL.md","line_end":33,"line_start":32},{"file":"SKILL.md","line_end":34,"line_start":33},{"file":"SKILL.md","line_end":35,"line_start":34},{"file":"SKILL.md","line_end":36,"line_start":35},{"file":"SKILL.md","line_end":37,"line_start":36},{"file":"SKILL.md","line_end":38,"line_start":37},{"file":"SKILL.md","line_end":39,"line_start":38},{"file":"SKILL.md","line_end":43,"line_start":39},{"file":"SKILL.md","line_end":48,"line_start":43}]},{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":58,"line_start":58},{"file":"SKILL.md","line_end":59,"line_start":59}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":60,"audit_model":"codex","audited_at":"2026-08-05T11:14:00.054+00:00","created_at":"2026-08-06T01:09:40.203854+00:00","static_findings":[{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If mis","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":24,"severity":"medium","line_start":22},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":30,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `--project` | — | — | GCP project ID for Pub/Sub resources |","category":"external_commands","line_end":31,"severity":"medium","line_start":30},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `--subscription` | — | — | Existing Pub/Sub subscription name (skip setup) |","category":"external_commands","line_end":32,"severity":"medium","line_start":31},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `--topic` | — | — | Existing Pub/Sub topic with Gmail push permission already granted |","category":"external_commands","line_end":33,"severity":"medium","line_start":32},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `--label-ids` | — | — | Comma-separated Gmail label IDs to filter (e.g., INBOX,UNREAD) |","category":"external_commands","line_end":34,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `--max-messages` | — | 10 | Max messages per pull batch |","category":"external_commands","line_end":35,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `--poll-interval` | — | 5 | Seconds between pulls |","category":"external_commands","line_end":36,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `--msg-format` | — | full | Gmail message format: full, metadata, minimal, raw |","category":"external_commands","line_end":37,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `--once` | — | — | Pull once and exit |","category":"external_commands","line_end":38,"severity":"medium","line_start":37},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `--cleanup` | — | — | Delete created Pub/Sub resources on exit |","category":"external_commands","line_end":39,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `--output-dir` | — | — | Write each message to a separate JSON file in this directory |","category":"external_commands","line_end":43,"severity":"medium","line_start":39},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":48,"severity":"medium","line_start":43},{"id":"filesystem:SKILL.md:16:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If mis","category":"filesystem","line_end":16,"severity":"high","line_start":16},{"id":"filesystem:SKILL.md:58:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [gws-shared](../gws-shared/SKILL.md) — Global flags and auth","category":"filesystem","line_end":58,"severity":"high","line_start":58},{"id":"filesystem:SKILL.md:59:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"- [gws-gmail](../gws-gmail/SKILL.md) — All send, read, and manage email commands","category":"filesystem","line_end":59,"severity":"high","line_start":59}],"finding_verdicts":[{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"Line 16 uses Markdown backticks around a fixed documentation path and command name. It contains no Ruby or shell command substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:22:ruby-shell-backtick-execution","reason":"Lines 22 through 24 are a fenced Bash example showing the documented gws command. The backticks delimit Markdown and are not executable shell syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"Line 24 closes a Markdown code fence. No backtick command substitution or dynamic execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","reason":"Line 30 uses inline Markdown code formatting for the --project flag. It does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"Line 31 uses inline Markdown code formatting for the --subscription flag. It does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","reason":"Line 32 uses inline Markdown code formatting for the --topic flag. It does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"Line 33 uses inline Markdown code formatting for the --label-ids flag. It does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"Line 34 uses inline Markdown code formatting for the --max-messages flag. It does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"Line 35 uses inline Markdown code formatting for the --poll-interval flag. It does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"Line 36 uses inline Markdown code formatting for the --msg-format flag. It does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"Line 37 uses inline Markdown code formatting for the --once flag. It does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"Line 38 uses inline Markdown code formatting for the explicit --cleanup flag. It does not contain backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","reason":"Line 39 uses inline Markdown code formatting for the --output-dir flag. It does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","reason":"Lines 43 through 48 form a fenced Bash block of documented gws usage examples. The fence is Markdown, with no shell backtick substitution.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:16:path-traversal-sequence","reason":"Line 16 references a fixed sibling skill document as a prerequisite. This is a repository-relative documentation path, not user-controlled traversal.","verdict":"false_positive","confidence":0.97},{"id":"filesystem:SKILL.md:58:path-traversal-sequence","reason":"Line 58 is a Markdown link to a fixed sibling skill document. It performs no filesystem operation and accepts no path input.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:SKILL.md:59:path-traversal-sequence","reason":"Line 59 is a Markdown link to a fixed sibling skill document. It performs no filesystem operation and accepts no path input.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[],"subject_marketplace_commit_sha":"286d37c9c189ddd1aafd3548415fb031d1df79d5","subject_content_hash":"e24731916da25e0530da499c5b08cb3258b5a706cdd98f5169666ff5c76661fd","subject_tree_hash":"56abfecc3dbaae9db68a8c1c690e8de4b1534de6f1be30e6f088aeea11f64ec6","subject_plugin_path":"skills/googleworkspace/gws-gmail-watch","audit_payload_hash":"9ffce711ef37fb03583597b9a6ea2eaf","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"286d37c9c189ddd1aafd3548415fb031d1df79d5","contentHash":"e24731916da25e0530da499c5b08cb3258b5a706cdd98f5169666ff5c76661fd","treeHash":"56abfecc3dbaae9db68a8c1c690e8de4b1534de6f1be30e6f088aeea11f64ec6","pluginPath":"skills/googleworkspace/gws-gmail-watch","auditPayloadHash":"9ffce711ef37fb03583597b9a6ea2eaf"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/googleworkspace-gws-gmail-watch/audits/7/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}