This skill facilitates arbitrary remote code execution via unverified shell scripts, lacks essential security sandboxing, and allows untrusted external content to persistently override agent behavior and exfiltrate sensitive credentials.
npx skills add https://github.com/eugeniughelbur/obsidian-second-brainThe skill documentation promotes the use of `curl | bash` for installation and includes instructions for setting up background hooks that execute arbitrary shell scripts, which contradicts the security-conscious nature of an 'AI-first' knowledge base.
The 'Bootstrap a new vault' section explicitly instructs users to pipe a remote script into bash: `curl -sL https://raw.githubusercontent.com/.../quick-install.sh | bash`.
Remote code download and execution detected
curl -sL https://raw.githubusercontent.com/eugeniughelbur/obsidian-second-brain/main/scripts/quick-install.sh | bash
The PostCompact background agent spawns a headless claude subprocess with --dangerously-skip-permissions, driven by the compaction summary. This removes all permission guardrails from an agent whose prompt is partially derived from potentially attacker-influenced conversation content.
'Spawns a headless claude --dangerously-skip-permissions -p subprocess in the vault directory'; 'Agent runs silently, propagates updates, and exits - user sees nothing'
A remote resource is downloaded with curl/wget and piped directly into a shell interpreter (optionally via sudo). The downloaded script runs with no integrity check (no checksum/signature), so a compromised server, MITM, or hijacked URL leads to arbitrary code execution. Download to a file, verify it (e.g. sha256sum -c against a pinned digest, or a signature), then execute it.
curl -sL https://raw.githubusercontent.com/eugeniughelbur/obsidian-second-brain/main/scripts/quick-install.sh | bash
The skill configures a background agent that runs autonomously after context compaction, potentially performing unauthorized file modifications without direct user oversight.
A background agent that fires automatically whenever Claude compacts the conversation context.
The skill provides instructions to wire shell scripts into Claude's hook system, granting the skill persistent, automated execution capabilities outside of the user's immediate interaction loop.
"command": "/Users/you/.claude/skills/obsidian-second-brain/hooks/obsidian-bg-agent.sh"
API keys for xAI Grok, Perplexity, YouTube, and OpenAI are stored in ~/.config/obsidian-second-brain/.env and loaded by research scripts. These scripts are executed via uv run against an external package ecosystem, meaning a compromised or supply-chain-attacked dependency could read and exfiltrate these credentials.
'API keys live at ~/.config/obsidian-second-brain/.env. Run install.sh and answer y to the research toolkit prompt'; 'uv run -m scripts.research.x_read', 'uv run -m scripts.research.research'
The research toolkit sends vault content and user queries to external services (Perplexity, Grok, NotebookLM) without explicit per-request confirmation, posing a risk of sensitive data exposure.
Includes a research toolkit (7 commands: /x-read, /x-pulse, /research, /research-deep, /notebooklm, /youtube, /podcast)
The skill instructs the agent to prefer its own slash commands and custom logic over built-in MCP tools or standard file operations, effectively overriding the platform's intended tool usage patterns.
If MCP is not installed, silently use filesystem access. Tell the user ONCE (first time only)...
The /obsidian-ingest command fetches arbitrary URLs and pasted text, extracts entities and claims, and then uses that content to drive vault writes and subagent spawning. An attacker-controlled webpage or document could embed instructions that the agent treats as authoritative vault rules, especially since _CLAUDE.md content 'overrides the defaults in this skill'.
'/obsidian-ingest': 'Accept a URL, file path, or pasted text as the source... Read or fetch the full source content... Extract: entities, concepts, claims, action items'; '_CLAUDE.md wins on all vault-specific rules'
The skill encourages the agent to execute remote scripts via curl-to-bash, which can be used to inject arbitrary instructions or malicious payloads into the agent's execution environment.
curl -sL https://raw.githubusercontent.com/eugeniughelbur/obsidian-second-brain/main/scripts/quick-install.sh | bash
Multiple commands (/obsidian-save, /obsidian-recap, /obsidian-health, /obsidian-ingest, /research-deep) spawn parallel subagents whose prompts are constructed from vault content and ingested external sources. Since vault content can include attacker-controlled data (ingested URLs, pasted text, X posts), a malicious source could inject instructions into the subagent prompt chain.
'/obsidian-ingest': 'Spawn parallel subagents to distribute knowledge'; '/research-deep': 'Emits a JSON propagation payload... Calling Claude reads that payload and runs /obsidian-save-style propagation: spawns parallel subagents'
Four scheduled agents (morning, nightly, weekly, health-check) run autonomously with no user interaction, with the nightly agent performing reconciliation, synthesis, and vault-wide rewrites. The nightly prompt explicitly instructs the agent to 'auto-resolve clear winners' in contradictions, making irreversible knowledge changes without human review.
'obsidian-nightly': 'Auto-resolve clear winners. Flag ambiguous ones in wiki/decisions/'; 'Do not ask questions. Do not fix anything destructive — only add, update, link. Save and stop.'
The skill grants _CLAUDE.md unconditional precedence over all skill defaults, and /obsidian-init auto-generates this file from vault content discovered at runtime. If an attacker can place content in the vault (e.g., via /obsidian-ingest), they can influence the generated _CLAUDE.md, which then persistently overrides agent behavior across all future sessions.
'_CLAUDE.md wins on all vault-specific rules... Never let skill defaults override an explicit _CLAUDE.md rule'; '/obsidian-init': 'Generate a complete _CLAUDE.md... filled with real values from the vault'
Global/unverified dependency execution — global npm/yarn package, dotnet tool, or auto-confirmed npx run without version or integrity pinning
npx -y
SKILL.md links to "hooks/validate-ai-first.hook.yaml" but the file is not part of the skill package — the workflow silently degrades or the content is sourced elsewhere at runtime
[`hooks/validate-ai-first.hook.yaml`](hooks/validate-ai-first.hook.yaml)
SKILL.md links to "references/ai-first-rules.md" but the file is not part of the skill package — the workflow silently degrades or the content is sourced elsewhere at runtime
[`references/ai-first-rules.md`](references/ai-first-rules.md)
Skill does not specify a license field. Specifying a license helps users understand usage terms.
Skill description is empty or too short. A clear description helps users evaluate the skill's purpose.
[](https://mondoo.com/ai-agent-security/skills/github/eugeniughelbur/obsidian-second-brain)<a href="https://mondoo.com/ai-agent-security/skills/github/eugeniughelbur/obsidian-second-brain"><img src="https://mondoo.com/ai-agent-security/api/badge/github/eugeniughelbur/obsidian-second-brain.svg" alt="Mondoo Skill Check" /></a>https://mondoo.com/ai-agent-security/api/badge/github/eugeniughelbur/obsidian-second-brain.svgSkills can read files, run commands, and access credentials. Mondoo helps organizations manage the security risks of AI agent skills across their entire fleet.