Gmail No Send

Security checks across static analysis, malware telemetry, and agentic risk

Overview

The tool does not show code that sends email, but it still gets broad Gmail permissions and its account/token handling needs review before use.

Before installing, understand that this is a no-send Gmail client, not a purely read-only one. Use a reviewed or pinned version, protect ~/.config/gmail-no-send/token.json, verify which Google account is authenticated, and require approval before letting an agent create/update drafts or archive messages.

Static analysis

No static analysis findings were reported for this release.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Risk analysis

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

#
ASI03: Identity and Privilege Abuse
Medium
What this means

A user or agent may think it is operating on one Gmail account while the CLI actually uses whichever token is cached locally.

Why it was flagged

Credentials are loaded from a shared token path without using the --account value. Because the CLI can read mail, create/update drafts, and archive messages, a cached token can be used under a different account label than the user expects.

Skill content
def load_credentials() -> Optional[Credentials]:
    tp = token_path()
    if tp.exists():
        return Credentials.from_authorized_user_file(str(tp), SCOPES)
Recommendation

Store tokens per account, verify the authenticated Google email against the requested account, and make the active account visible before mutating drafts or archiving mail.

#
ASI03: Identity and Privilege Abuse
Medium
What this means

The included CLI does not expose a send command, but a stolen or reused token could potentially be used by other code to send or modify Gmail data.

Why it was flagged

The no-send guarantee is enforced by this application, but the OAuth token itself has broader Gmail API authority if reused outside the CLI.

Skill content
If an attacker obtains `~/.config/gmail-no-send/token.json`, they can use it with the Gmail API directly (the token has `compose` scope).
Recommendation

Protect the token file, use a dedicated Google OAuth client, revoke the token when no longer needed, and consider enforcing file permissions such as chmod 600.

#
ASI02: Tool Misuse and Exploitation
Low
What this means

An agent using this skill can change Gmail state by creating drafts or moving messages out of the inbox, even though it cannot send email through the provided CLI.

Why it was flagged

The tool can create drafts and archive messages by modifying Gmail labels. These actions are disclosed and purpose-aligned, but they are account-changing operations.

Skill content
return service.users().drafts().create(userId="me", body=draft_body).execute()
...
body = {"removeLabelIds": ["INBOX"]}
return service.users().messages().modify(userId="me", id=message_id, body=body).execute()
Recommendation

Require human review for archive and draft-update actions, especially on work or shared mailboxes.

#
ASI09: Human-Agent Trust Exploitation
Low
What this means

A user may install it expecting only passive email reading, while the tool can still create/update drafts and archive messages.

Why it was flagged

The 'read-only' wording conflicts with the listed draft and archive capabilities. Later sections clarify the no-send model, but the headline wording could cause users to underestimate mailbox mutations.

Skill content
description: Read-only Gmail CLI that cannot send email by design. Search, read, create drafts, update drafts, and archive messages
Recommendation

Describe the tool as 'no-send' rather than 'read-only,' and clearly separate read-only commands from mailbox-changing commands.

#
ASI04: Agentic Supply Chain Vulnerabilities
Low
What this means

Installing directly from the moving repository could expose Gmail credentials to unreviewed future code changes.

Why it was flagged

The optional GitHub install is not pinned to a tag or commit, so it may install code different from the reviewed artifacts.

Skill content
pip install git+https://github.com/meimakes/gmail-no-send.git
Recommendation

Install from the reviewed local files or pin the GitHub install to a specific commit/tag and verify dependencies.