T01 · Skill Instruction Hijacking
- Location
scripts/codex_backend.py:27- Finding
Untrusted Presentation Content Is Passed to a Full-Auto Codex Agent
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill appears to generate PPT decks as advertised, but it includes risky optional automation and configuration paths that users should review before installing.
Install only if you trust the publisher and are comfortable with the skill calling configured image/vision providers, writing outputs and caches under your working directory, and installing Python dependencies. Prefer the maintained `scripts/generate_ppt.py` path, avoid `--backend codex` for untrusted slide content, use a virtual environment, and do not use proprietary templates with untrusted relay endpoints.
scripts/codex_backend.py:27Untrusted Presentation Content Is Passed to a Full-Auto Codex Agent
scripts/image_generator.py:108API-Controlled Image URLs Enable Server-Side Request Forgery and Arbitrary Response Writes
generate_ppt.py:44Legacy Entry Point Implicitly Loads Credentials from Unrelated Parent Directories
requirements.txt:1Installer Uses Open-Ended Dependency Versions in the Active Python Environment
The template-analysis flow uploads locally supplied template images to a vision API and caches analysis results on disk, but this data-handling behavior is broader than the simple generation purpose suggests. If users provide proprietary slide templates, this can lead to unintended disclosure of confidential design or business content to third-party services.
The template-analysis flow uploads locally supplied template images to a vision API and caches analysis results on disk, but this data-handling behavior is broader than the simple generation purpose suggests. If users provide proprietary slide templates, this can lead to unintended disclosure of confidential design or business content to third-party services.
The template-analysis flow uploads locally supplied template images to a vision API and caches analysis results on disk, but this data-handling behavior is broader than the simple generation purpose suggests. If users provide proprietary slide templates, this can lead to unintended disclosure of confidential design or business content to third-party services.
The template-analysis flow uploads locally supplied template images to a vision API and caches analysis results on disk, but this data-handling behavior is broader than the simple generation purpose suggests. If users provide proprietary slide templates, this can lead to unintended disclosure of confidential design or business content to third-party services.
The template-analysis flow uploads locally supplied template images to a vision API and caches analysis results on disk, but this data-handling behavior is broader than the simple generation purpose suggests. If users provide proprietary slide templates, this can lead to unintended disclosure of confidential design or business content to third-party services.
The template-analysis flow uploads locally supplied template images to a vision API and caches analysis results on disk, but this data-handling behavior is broader than the simple generation purpose suggests. If users provide proprietary slide templates, this can lead to unintended disclosure of confidential design or business content to third-party services.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
default_prompt: "Make me a 5-slide deck about [topic] using gpt-image2-ppt; pick a fitting style from styles/."
# Trust surface (what the user agrees to when installing this skill):
# - Reads scoped .env files only (skill dir, ~/.claude/skills/.../, ~/skills/.../)
# and never walks parent project directories.
# - Hits exactly the OPENAI_BASE_URL endpoint you set, plus optional
# VISION_BASE_URL endpoint you set (template-clone mode only).