Back to skill

Security audit

Talos — God of Automation

Security checks for vulnerabilities and agentic risk

Overview

The skill's calendar generator is mostly purpose-aligned, but its install instructions modify the system Python environment through an unpinned dependency while claiming purely local operation.

Review before installing. The generator itself does not appear to send data out or request social-media credentials, but the recommended install command can change your system Python packages and pulls the latest unpinned dependency. Use an isolated virtual environment instead, and run it in a directory where overwriting generated calendar files would not matter.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:51
Finding

Unpinned Dependency Installation into the System Python Environment

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (15)

Ae4

Medium
Category
analysis-evasion
Confidence
80% confidence
Finding

Suspicious Unicode normalization or mixed-script content

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill claims it is 'pure offline generation' and 'no data transmitted,' but its documented install step runs pip3 install, which reaches out to package indexes and executes package installation logic from an external dependency. This discrepancy can mislead users into believing no network access or supply-chain risk exists, increasing the chance they run the skill in sensitive environments under false assumptions.

Content

No source excerpt is available for this finding.

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

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

md
border_style="cyan"
))

# ── Best posting times ────────────────────────────────────────────────────────
BEST_TIMES = {
    "twitter":   [("Mon", "9am"), ("Tue", "9am"), ("Wed", "12pm"), ("Thu", "9am"), ("Fri", "10am")],
    "linkedin":  [("Tue", "8am"), ("Wed", "10am"), ("Thu", "9am"), ("Mon", "8am"), ("Fri", "9am")],

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

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

md
"threads":   [("Mon", "9am"), ("Wed", "12pm"), ("Fri", "11am"), ("Tue", "9am"), ("Thu", "2pm")],
}

# ── Caption templates per tone ────────────────────────────────────────────────
TONE_HOOKS = {
    "educational":  [
        "Here's what most people get wrong about {topic}:",

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

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

md
"threads":   [("Mon", "9am"), ("Wed", "12pm"), ("Fri", "11am"), ("Tue", "9am"), ("Thu", "2pm")],
}

# ── Caption templates per tone ────────────────────────────────────────────────
TONE_HOOKS = {
    "educational":  [
        "Here's what most people get wrong about {topic}:",

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

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

md
}
hooks = TONE_HOOKS.get(TONE, TONE_HOOKS["educational"])

# ── Content type formats ──────────────────────────────────────────────────────
CONTENT_FORMATS = {
    "education":    ["how-to", "tips-list", "explainer", "myth-busting", "framework"],
    "inspiration":  ["quote", "success-story", "milestone", "mindset", "reminder"],

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

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

md
return random.choice(CONTENT_FORMATS[key])
    return random.choice(["tip", "story", "question", "fact"])

# ── Offline topic angle generator ─────────────────────────────────────────────
def get_topic_ideas(topic: str) -> list:
    return [
        f"beginner guide to {topic}",

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

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

md
console.print("[dim]Generating topic angles…[/dim]")
topic_ideas = get_topic_ideas(TOPIC)

# ── Platform caption generators ───────────────────────────────────────────────
def gen_twitter(pillar: str, content_form: str, week: int) -> str:
    hook = random.choice(hooks).replace("{topic}", topic_short).replace("{number}", str(random.choice([3, 5, 7])))
    bodies = [

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

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

md
"threads":   gen_threads,
}

# ── Build 4-week calendar ─────────────────────────────────────────────────────
calendar = []
for week in range(1, 5):
    for platform in PLATFORMS:

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

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

md
"threads":   gen_threads,
}

# ── Build 4-week calendar ─────────────────────────────────────────────────────
calendar = []
for week in range(1, 5):
    for platform in PLATFORMS:

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

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

md
)
console.print(cal_table)

# ── Display: Sample captions ──────────────────────────────────────────────────
console.print()
for platform in PLATFORMS[:2]:
    sample = next((p for p in calendar if p["platform"] == platform), None)

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

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

md
border_style="yellow"
        ))

# ── Display: Hashtag strategy ─────────────────────────────────────────────────
HASHTAG_GUIDE = {
    "twitter":   "1-2 hashtags max. Use trending + niche specific. Never in the middle of text.",
    "linkedin":  "3-5 hashtags at the end. Mix: 1 broad + 2 niche + 1 trending.",

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

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

md
ti_lines = "\n".join([f"[dim]{i + 1}.[/dim] {idea}" for i, idea in enumerate(topic_ideas)])
    console.print(Panel(ti_lines, title="[bold]💡 Content Angle Ideas[/bold]", border_style="magenta"))

# ── Save outputs ──────────────────────────────────────────────────────────────
topic_slug = re.sub(r"[^a-z0-9]", "_", TOPIC[:20].lower())
json_path  = f"social_calendar_{topic_slug}_{TODAY}.json"
md_path    = f"social_calendar_{topic_slug}_{TODAY}.md"

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The embedded Python writes JSON and Markdown files to the local working directory without clearly warning the user about file creation and overwrite behavior. While filenames are semi-derived and not attacker-controlled beyond topic text sanitization, silent writes can still overwrite existing files with the same date/topic pattern or leak generated business content into unintended directories.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The manifest description claims the skill will 'write platform-optimised captions' and export a 'ready-to-use content calendar.' In code, the caption generators emit placeholder text such as '[insight 1]', '[reason]', '[Main value]', and '[Your honest take]', meaning the output is a scaffold for manual completion rather than finished publishable content.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.