Voice Note Transcriber

PassAudited by ClawScan on May 12, 2026.

Overview

The skill's code matches its stated purpose, but running it gives it email/OpenAI credentials, sends matching voice-note audio to OpenAI, writes persistent Obsidian notes, and may mark emails read.

Before installing, make sure you are comfortable giving the skill an email app password and OpenAI key, sending matching voice-note audio to OpenAI, and writing generated transcripts into your Obsidian vault. Use a narrow subject keyword or dedicated mailbox, consider disabling MARK_EMAIL_READ for the first run, and install any missing dependencies from trusted sources.

Findings (5)

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.

What this means

Anyone who can access these credentials could read the mailbox or use the OpenAI account; local process observers may also see the OpenAI bearer token while curl is running.

Why it was flagged

The skill necessarily uses mailbox credentials and an OpenAI API key for its stated workflow. The OpenAI key is passed to curl as a command-line argument, which is purpose-aligned but worth noticing on shared systems.

Skill content
EMAIL_PASSWORD = os.getenv("EMAIL_PASSWORD", ""); OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", ""); with Imbox(imap_host, username=EMAIL_ADDRESS, password=EMAIL_PASSWORD, ssl=True, port=imap_port) as imbox; "-H", f"Authorization: Bearer {OPENAI_API_KEY}"
Recommendation

Use an app-specific email password, run on a trusted machine, rotate credentials if exposed, and prefer an implementation that avoids placing API keys in process arguments.

What this means

Voice-note audio that may contain private information leaves the mailbox/local machine and is processed by OpenAI.

Why it was flagged

Matching email audio attachments are uploaded to OpenAI's transcription API. This is disclosed and central to the skill, but it is still a third-party data transfer.

Skill content
"https://api.openai.com/v1/audio/transcriptions", "-F", f"file=@{audio_path}", "-F", "model=whisper-1"
Recommendation

Only run this on audio you are comfortable sending to OpenAI, and narrow the email keyword or mailbox source if needed.

What this means

A broad keyword or unexpected matching email could trigger transcription/API usage and change the read state of mailbox messages.

Why it was flagged

The script processes all unread messages whose subject contains the configured keyword and marks processed messages as read when the default setting is enabled.

Skill content
messages = imbox.messages(unread=True); if VOICE_NOTE_KEYWORD.lower() not in subject.lower(): continue; transcript = transcribe(tmp_path); if MARK_EMAIL_READ: imbox.mark_seen(uid)
Recommendation

Use a specific keyword or dedicated mailbox/folder, review MARK_EMAIL_READ before first run, and consider adding sender, size, or count limits for automation.

What this means

If a malicious or misleading voice note is transcribed into the vault, future users or agents reading the vault could over-trust that content.

Why it was flagged

Email-derived subject, sender, and transcript text are persisted into Obsidian notes. This is the intended output, but the stored content may later be reused as trusted context.

Skill content
content = f"""--- ... email_subject: "{subject}" ... email_from: "{sender}" ... {transcript} ... """; with open(filepath, "w", encoding="utf-8") as f: f.write(content)
Recommendation

Treat generated transcripts as untrusted until reviewed, especially before using the Obsidian vault as AI context or automation input.

What this means

The skill may fail until extra dependencies are installed, and users may need to choose dependency sources themselves.

Why it was flagged

The script depends on imbox and curl even though the supplied requirements list only python3 and there is no install spec. This is a packaging/provenance gap, not evidence of malicious behavior.

Skill content
from imbox import Imbox  # lazy import; cmd = ["curl", "-sS", "https://api.openai.com/v1/audio/transcriptions", ...]
Recommendation

Install missing dependencies only from trusted sources, and prefer a future package version that declares and pins its runtime requirements.