Back to skill

Security audit

Vibe Notion

Security checks for vulnerabilities and agentic risk

Overview

This skill is clearly for Notion automation, but it asks an agent to use a full user Notion session credential and perform broad write actions with weak safeguards.

Install only if you intentionally want an agent to act as your full Notion user through an unofficial private API. Prefer the official integration-token CLI for lower-risk work, pin and verify the package version before use, review every write/delete/archive/batch command before execution, and treat `$hints` as advisory text rather than commands to run automatically. Clear or rotate the stored Notion session token when finished.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (4)

T01 · Skill Instruction Hijacking

Error
Location
references/output-format.md:44
Finding

Untrusted CLI Response Hints Can Trigger Destructive Agent Actions

Content
View full analysis
--workspace-id --property \"Revenue Sum\"` to remove it." ] } ``` **When `$hints` is present**: Read each hint carefully and execute the suggested fix commands. ``` ### Technical Analysis The Skill instructs the agent to treat the contents of the `$hints` response field as executable instructions rather than untrusted data. These hints originate from the `vibe-notion` CLI and ultimately depend on external API responses, workspace state, and the behavior of a third-party package. The documented remediation can delete database properties. No strict parser, action allowlist, argument validation, user confirmation, or separation between informational text and authorized commands is required. Consequently, a compromised dependency or manipulated hint-producing path could cause the agent to execute an attacker-selected operation. The issue is not merely that hints are displayed. The vulnerable behavior is the explicit direction to “execute the suggested fix commands,” which crosses the trust boundary between external data and agent instructions. ### Attack Path 1. An attacker compromises the CLI dependency, its response-processing logic, or another source that influences `$hints`. 2. A database query returns a `$ ...[truncated 1058 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:79
Finding

Automatic Extraction and Storage of a Full User Session Credential

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Error
Location
SKILL.md:480
Finding

Unpinned Package Runner Can Execute a Mutable Third-Party Release

Content
View full analysis
Remediation
View remediation

T02 · Agent Memory Poisoning

Warning
Location
SKILL.md:93
Finding

Persistent Workspace Metadata Can Be Poisoned Across Agent Sessions

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
Findings (12)

Credential Access

High
Category
Privilege Escalation
Confidence
93% confidence
Finding

The skill instructs that macOS Keychain access may be requested to decrypt the Notion cookie, which is credential access to a protected local secret store. In an agent skill, normalizing Keychain prompts without emphasizing sensitivity can lead users to approve extraction of a credential that grants user-level access to private Notion data.

Content

Scanner excerpt · SKILL.md (reported line 87)May include surrounding context.

md
Credentials (`token_v2`) are auto-extracted from the Notion desktop app when you run any command. No API keys, OAuth, or manual extraction needed.

On macOS, your system may prompt for Keychain access on first use — this is normal and required to decrypt the cookie.

The extracted `token_v2` is stored at `~/.config/vibe-notion/credentials.json` with `0600` permissions.

Credential Access

High
Category
Privilege Escalation
Confidence
95% confidence
Finding

The skill explicitly describes storing the extracted token_v2 in ~/.config/vibe-notion/credentials.json. Even with 0600 permissions, this is a high-value session credential for the user's Notion account; any local compromise, overbroad agent behavior, or accidental disclosure of that file could enable unauthorized access and data modification.

Content

Scanner excerpt · SKILL.md (reported line 89)May include surrounding context.

md
On macOS, your system may prompt for Keychain access on first use — this is normal and required to decrypt the cookie.

The extracted `token_v2` is stored at `~/.config/vibe-notion/credentials.json` with `0600` permissions.

## Memory

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 52)May include surrounding context.

md
If a feature you need is not supported by `vibe-notion`, let the user know and offer to file a feature request at [devxoul/vibe-notion](https://github.com/devxoul/vibe-notion/issues) on their behalf. Before submitting, strip out any real user data — IDs, names, emails, tokens, page content, or anything else that could identify the user or their workspace. Use generic placeholders instead and keep the issue focused on describing the missing capability.

## Important: Never Write Scripts

**Never write scripts (Python, TypeScript, Bash, etc.) to automate Notion operations.** The `batch` command already handles bulk operations of any size. Writing a script to loop through API calls is always wrong — use `batch` with `--file` instead.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill normalizes automatic extraction of the user's token_v2 from the desktop app and local storage of that credential, but does not present this up front as a sensitive credential-access action requiring informed consent. Because token_v2 acts as the user against Notion's private API, compromise or misuse could expose or modify all accessible workspace content.

Content

No source excerpt is available for this finding.

Unrestricted Tool Access

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Skill grants unrestricted tool access without appropriate constraints. An agent with unfettered tool access can perform arbitrary actions including file modification, network requests, and code execution.

Content

Scanner excerpt · SKILL.md (reported line 85)May include surrounding context.

md
## Authentication

Credentials (`token_v2`) are auto-extracted from the Notion desktop app when you run any command. No API keys, OAuth, or manual extraction needed.

On macOS, your system may prompt for Keychain access on first use — this is normal and required to decrypt the cookie.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill exposes many destructive and state-changing operations such as update, archive, delete-property, add-row, and update-row without an explicit safety warning to require user confirmation before mutating data. In an agent context, this increases the chance of accidental data loss, corruption, or irreversible workspace changes from misunderstood prompts.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding

The skill recommends executing npx -y vibe-notion without pinning an exact package version. That causes retrieval of the latest package at runtime, creating a supply-chain risk where a compromised or malicious newly published version could execute with the user's local permissions and access Notion credentials or workspace data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This documentation promotes high-impact batch write capabilities including create, update, archive, delete, schema changes, and file upload, but it does not prominently warn about destructive consequences, confirmation expectations, or safe-use guardrails. In an agent skill context, this increases the risk that an LLM or operator performs unintended bulk modifications at scale, especially because the feature is optimized to reduce round-trips and supports multi-step workflows.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

These examples show page update ... --replace-content usage without an explicit warning that the operation overwrites existing page body content. In a skill for interacting with a live Notion workspace, this can lead users or downstream agents to perform irreversible or hard-to-recover destructive edits, especially when commands are copied verbatim into automation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The dedicated 'Updating a Page' section normalizes full-content replacement as a routine update operation but does not clearly call out data-loss risk. In this context, the skill is an operational guide for a private Notion API, so omission of overwrite warnings increases the chance of accidental destructive actions against real workspace documents.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documentation tells users to automatically trust and execute fix commands embedded in the $hints output, including a destructive database delete-property command, without requiring independent validation, confirmation, or warning about deletion consequences. Because $hints is treated as actionable instruction text derived from data/API output, this creates an instruction-injection pathway where users or agents may perform schema-destructive actions based on untrusted content.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

This markdown file includes decision-flow language that says to use vibe-notion whenever the desktop app is installed and even to prefer it when both authentication options are available. That guidance is broad and lacks negative examples or explicit limits on when this skill should not be invoked, which can contribute to unintended activation in loosely matching Notion-related requests.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.