{"id":"cmv40cud4dd8mad06mrj5613l","slug":"google-workspace","publicId":"a6b1f8ae-aee1-42ad-bd48-aaa384c8f1cc","name":"google-workspace","description":"Gmail, Calendar, Drive, Docs, Sheets via gws CLI or Python.","version":"1.2.0","author":"Nous Research","license":"MIT","compatibility":"","status":"completed","overallGrade":"C","scannerVersion":11,"fileCount":7,"hasSkillMd":true,"hasScripts":true,"hasReferences":true,"hasEvals":false,"hasAssets":false,"sourceType":"github","sourceUrl":"https://github.com/NousResearch/hermes-agent/tree/main/skills/productivity/google-workspace","createdAt":"2026-10-11T15:58:46.456Z","completedAt":"2026-10-11T15:58:46.454Z","visibility":"public","publishedAt":"2026-07-29T11:29:51.094Z","category":"","frameworks":[],"badgeStatus":"conditional","downloadCount":0,"verdictRationale":{"summary":"Skill has warnings: 1 warning in security or structure checks.","verdict":"warn","scanners":[{"source":"vettd","weight":1,"verdict":"warn"},{"source":"cisco","weight":0.8,"verdict":"warn"}],"consensus":"warn","warnTriggers":["References external URL — review for indirect prompt injection risk"],"policyVersion":"consensus-v1","hardFailTriggers":[]},"verdictPolicyVersion":"consensus-v1","skillId":"cms605ywh03soad0h40xkq7hv","findings":[{"id":"cmv40cud4dd8pad06grjquhiz","source":"cisco","category":"security","label":"Active instruction acquires and executes remote content","detail":"SKILL.md:118 — SKILL.md contains an operative statement that explicitly coordinates remote content acquisition with execution.","severity":"high","ruleId":"ACTIVE_REMOTE_ACQUIRE_EXECUTE","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"6126e6fa5cdb13f8fee158414033a58e","filepath":"SKILL.md"},{"id":"cmv40cud4dd8vad06in5lrfuf","source":"cisco","category":"security","label":"Network-derived content reaches code execution","detail":"scripts/gws_bridge.py:113 — Correlated network → code_execution behavior across scripts/gws_bridge.py.","severity":"high","ruleId":"CORRELATED_NETWORK_EXECUTION_FLOW","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"0cea62d29122552d06a2d032a7281108","filepath":"scripts/gws_bridge.py"},{"id":"cmv40cud4dd8qad06wnefiueu","source":"cisco","category":"security","label":"Bulk process environment snapshot can expose credentials and tokens","detail":"scripts/google_api.py:90 — Pattern detected: os.environ.copy(","severity":"medium","ruleId":"DATA_EXFIL_ENV_VARS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"a0dcf0b935743016e9e3524b67cc0fd5","filepath":"scripts/google_api.py"},{"id":"cmv40cud4dd8uad06x5n8fi6o","source":"cisco","category":"security","label":"Bulk process environment snapshot can expose credentials and tokens","detail":"scripts/gws_bridge.py:110 — Pattern detected: os.environ.copy(","severity":"medium","ruleId":"DATA_EXFIL_ENV_VARS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"610d1a551f54b9cd74cedff312608747","filepath":"scripts/gws_bridge.py"},{"id":"cmv40cud4dd8sad06n4kvnyzm","source":"cisco","category":"security","label":"Outbound network request primitives that can transmit data externally","detail":"scripts/gws_bridge.py:59 — Pattern detected: urllib.request.Request(","severity":"medium","ruleId":"DATA_EXFIL_NETWORK_REQUESTS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"2af151bdfb6c55342a997dcae84a5ac0","filepath":"scripts/gws_bridge.py"},{"id":"cmv40cud4dd8tad064r66x5i2","source":"cisco","category":"security","label":"Outbound network request primitives that can transmit data externally","detail":"scripts/gws_bridge.py:61 — Pattern detected: urllib.request.urlopen(","severity":"medium","ruleId":"DATA_EXFIL_NETWORK_REQUESTS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"2af151bdfb6c55342a997dcae84a5ac0","filepath":"scripts/gws_bridge.py"},{"id":"cmv40cud4dd8xad06l9cw9849","source":"cisco","category":"security","label":"Outbound network request primitives that can transmit data externally","detail":"scripts/setup.py:400 — Pattern detected: urllib.request.urlopen(","severity":"medium","ruleId":"DATA_EXFIL_NETWORK_REQUESTS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"23ce4b3cc528bdfa8b3a85931d7c76b3","filepath":"scripts/setup.py"},{"id":"cmv40cud4dd8yad061voemo3w","source":"cisco","category":"security","label":"Outbound network request primitives that can transmit data externally","detail":"scripts/setup.py:401 — Pattern detected: urllib.request.Request(","severity":"medium","ruleId":"DATA_EXFIL_NETWORK_REQUESTS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"23ce4b3cc528bdfa8b3a85931d7c76b3","filepath":"scripts/setup.py"},{"id":"cmv40cud4dd8nad06fxaaf6al","source":"vettd","category":"security","label":"References external URL — review for indirect prompt injection risk","detail":"External URL(s) detected in SKILL.md — referenced content can change after audit","severity":"medium","ruleId":"VTD-0088","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"42638a8b7e9fc5df27449992eaebc724","filepath":"SKILL.md"},{"id":"cmv40cud4dd8oad06je5b9nvl","source":"cisco","category":"security","label":"Undeclared network usage","detail":"SKILL.md — Skill code uses network libraries but doesn't declare network requirement","severity":"medium","ruleId":"TOOL_ABUSE_UNDECLARED_NETWORK","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"16553ad68e1e8ade5e1f2387f1770caa","filepath":"SKILL.md"},{"id":"cmv40cud4dd8rad06bbus5eko","source":"cisco","category":"security","label":"Script contacts a destination the documentation never mentions","detail":"scripts/google_api.py:1075 — Script contacts or configures 'docs.google.com' but the skill documentation never visibly mentions it. Undocumented network destinations can indicate behaviour the manifest and description do not disclose.","severity":"low","ruleId":"UNDECLARED_NETWORK_DESTINATION","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"c1380d4897a6868a761ae4d687cfb81e","filepath":"scripts/google_api.py"},{"id":"cmv40cud4dd8zad066hk9rwd0","source":"cisco","category":"security","label":"Script contacts a destination the documentation never mentions","detail":"scripts/setup.py:402 — Script contacts or configures 'oauth2.googleapis.com' but the skill documentation never visibly mentions it. Undocumented network destinations can indicate behaviour the manifest and description do not disclose.","severity":"low","ruleId":"UNDECLARED_NETWORK_DESTINATION","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"a96170d11a101b9a7eaa9ed1c30225df","filepath":"scripts/setup.py"},{"id":"cmv40cud4dd8wad06j68fqlvt","source":"cisco","category":"security","label":"Script contacts a destination the documentation never mentions","detail":"scripts/setup.py:51 — Script contacts or configures 'www.googleapis.com' but the skill documentation never visibly mentions it. Undocumented network destinations can indicate behaviour the manifest and description do not disclose.","severity":"low","ruleId":"UNDECLARED_NETWORK_DESTINATION","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"a96170d11a101b9a7eaa9ed1c30225df","filepath":"scripts/setup.py"}],"scannerRuns":[{"source":"cisco","status":"success","verdict":null,"grade":"C","findingCount":12,"criticalCount":0,"highCount":2},{"source":"vettd","status":"success","verdict":null,"grade":"B","findingCount":1,"criticalCount":0,"highCount":0}],"user":{"name":"Justin Pacella","image":"https://avatars.githubusercontent.com/u/97124458?v=4"},"repository":{"owner":"NousResearch","name":"hermes-agent"},"freshness":{"status":"verified_unchanged","reason":null,"retryable":false,"renamedTo":null,"lastCheckedAt":"2026-10-21T15:21:19.096Z","lastVerifiedAt":"2026-10-21T15:21:19.096Z","lastChangeDetectedAt":"2026-10-11T15:56:15.664Z","scannedHash":"e8a6df26c31a06e05904a3b0666f8505449f8382","latestUpstreamHash":"e8a6df26c31a06e05904a3b0666f8505449f8382","nextCheckDueAt":"2026-10-22T14:00:40.294Z"},"signalCategories":[{"category":"safety","label":"Safety","form":"graded","verdict":null,"rows":[]},{"category":"reliability","label":"Reliability & Quality","form":"graded","verdict":null,"rows":[]},{"category":"performance","label":"Performance","form":"measured","verdict":{"form":"measured","magnitudes":[{"ruleId":"performance/static-context-tokens","label":"Static context tokens","value":3589,"unit":null,"method":"tiktoken/cl100k_base/skill-md-body"}]},"rows":[{"origin":"signal","id":"cmv40cujsdda0ad06d6m063ni","subjectType":"skill_audit","subjectId":"cmv40cud4dd8mad06mrj5613l","relatedType":"","relatedId":"","dataCategory":"performance","sourceClass":"scan","source":"vettd","ruleId":"performance/progressive-disclosure","severity":null,"label":"Progressive disclosure","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-11T15:58:45.000Z","payload":null},{"origin":"signal","id":"cmv40cuh6dd96ad06bg4f7b2d","subjectType":"skill_audit","subjectId":"cmv40cud4dd8mad06mrj5613l","relatedType":"","relatedId":"","dataCategory":"performance","sourceClass":"scan","source":"vettd","ruleId":"performance/static-context-tokens","severity":null,"label":"Static context tokens","detail":null,"valueNum":3589,"valueText":null,"unit":null,"method":"tiktoken/cl100k_base/skill-md-body","derivation":null,"confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-11T15:58:45.000Z","payload":null}]},{"category":"cost","label":"Cost","form":"measured","verdict":null,"rows":[]},{"category":"compatibility","label":"Compatibility","form":"unjudged","verdict":{"form":"unjudged"},"rows":[{"origin":"signal","id":"cmv40cujydda2ad06c8svo5vp","subjectType":"skill_audit","subjectId":"cmv40cud4dd8mad06mrj5613l","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/cli-help","severity":null,"label":"CLI help","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-11T15:58:45.000Z","payload":null},{"origin":"signal","id":"cmv40cuhddd98ad0631zlhtum","subjectType":"skill_audit","subjectId":"cmv40cud4dd8mad06mrj5613l","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-environment-assumptions","severity":null,"label":"Declared environment assumptions","detail":null,"valueNum":null,"valueText":"","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-11T15:58:45.000Z","payload":null},{"origin":"signal","id":"cmv40cuifdd9kad06xrv3epjy","subjectType":"skill_audit","subjectId":"cmv40cud4dd8mad06mrj5613l","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-name","severity":null,"label":"Declared skill name","detail":null,"valueNum":null,"valueText":"google-workspace","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-11T15:58:45.000Z","payload":null},{"origin":"signal","id":"cmv40cuk6dda4ad06370cd3ov","subjectType":"skill_audit","subjectId":"cmv40cud4dd8mad06mrj5613l","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/structured-output","severity":null,"label":"Structured output","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-11T15:58:45.000Z","payload":null}]},{"category":"sentiment","label":"Popularity","form":"unjudged","verdict":null,"rows":[]},{"category":"characteristics","label":"Characteristics","form":"unjudged","verdict":null,"rows":[]}],"signalCount":38,"publisherSupplied":["name","description","author","version","license"]}