CtrlK
BlogDocsLog inGet started
Tessl Logo

odyssey4me/gmail

Send, search, and organize Gmail messages, drafts, and labels. Use when asked to compose an email, reply to mail, forward a message, search inbox, manage attachments, or organize Gmail.

75

Quality

94%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

High

Do not use without reviewing

Overview
Quality
Evals
Security
Files

Security

1 high severity finding. You should review these findings carefully before considering using this skill.

High

W007: Insecure credential handling detected in skill instructions.

What this means

The skill handles credentials insecurely by requiring the agent to include secret values verbatim in its generated output. This exposes credentials in the agent’s context and conversation history, creating a risk of data exfiltration.

Why it was flagged

The skill instructs users to place OAuth client_id and client_secret in a config file and shows a CLI command that accepts --client-secret, which requires handling and potentially outputting secret values verbatim (and exposes them via command-line/config storage).

Where we found it

[REDACTED]

secret · 11 sites

The plugin instructs users to provide OAuth [REDACTED] via command-line argument (--client-secret) and stores it in a plaintext YAML config file, exposing the secret in shell history, process lists, and on disk.

Report incorrect finding

Low

Low-risk findings.

1 low severity finding. Worth noting, but not necessarily harmful.

Low

W011: Third-party content exposure detected (indirect prompt injection risk).

What this means

The skill exposes the agent to untrusted, user-generated content from public third-party sources, creating a risk of indirect prompt injection. This includes browsing arbitrary URLs, reading social media posts or forum comments, and analyzing content from unknown websites.

Why it was flagged

The skill's CLI and code (SKILL.md and scripts/gmail.py) explicitly fetch and display Gmail messages and message bodies via the Gmail API (e.g., messages list/get and extract_message_body), which are untrusted, user-generated emails that the agent will read and can materially influence subsequent actions like replying, sending, or labeling.

Where we found it

www.googleapis.com

domain · 5 sites

The plugin fetches Gmail messages and message bodies from the Gmail API at www.googleapis.com, which returns untrusted user-generated email content that the agent reads and can act upon.

scripts/gmail.py

76

GMAIL_SCOPES_READONLY = ["https://www.googleapis.com/auth/gmail.readonly"]

scripts/gmail.py

77

GMAIL_SCOPES_SEND = ["https://www.googleapis.com/auth/gmail.send"]

scripts/gmail.py

78

GMAIL_SCOPES_MODIFY = ["https://www.googleapis.com/auth/gmail.modify"]

scripts/gmail.py

79

GMAIL_SCOPES_LABELS = ["https://www.googleapis.com/auth/gmail.labels"]

scripts/gmail.py

344

return build("gmail", "v1", credentials=creds)

oauth2.googleapis.com

domain · 3 sites

The plugin uses oauth2.googleapis.com for OAuth token exchange during the authentication flow.

scripts/gmail.py

187

"token_uri": "https://oauth2.googleapis.com/token"

scripts/gmail.py

264

flow = InstalledAppFlow.from_client_config(client_config, scopes)

scripts/gmail.py

265

creds = flow.run_local_server(port=0) # Opens browser for consent

Audited
Security analysis
Snyk