T01 · Skill Instruction Hijacking
- Location
guidance/system-prompt.md:10- Finding
Agent Role and Instruction Hijacking
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a disclosed workflow-runner skill, but it needs review because it can execute remote workflows, spawn agents, expose database credentials, and create persistent cross-project memory.
Review carefully before installing. Use it only with .prose programs you trust, avoid arbitrary remote URLs unless you have inspected and pinned the content yourself, keep persistent agents scoped to a project or run, and avoid PostgreSQL mode with production credentials. If PostgreSQL is needed, use a dedicated least-privilege database, do not rely on DATABASE_URL, and do not expose unauthenticated Docker Postgres on a shared or reachable host.
guidance/system-prompt.md:10Agent Role and Instruction Hijacking
SKILL.md:67Arbitrary Remote Workflow Retrieval and Execution
prose.md:438Cross-Run and Cross-Project Persistent Memory Poisoning
state/postgres.md:64PostgreSQL Credentials Exposed to Program-Controlled Subagents and Logs
state/postgres.md:465SQL and Shell-Command Injection Through Unescaped Workflow Output
state/postgres.md:138Recommended PostgreSQL Deployment Disables Authentication and Publishes the Database Port
Referenced artifact was not completely inspected
ailed system description, they don't just describe it, they _simulate_ it. The `prose.md` specification describes a virtual machine with enough fidelity that a
Referenced artifact was not completely inspected
ailed system description, they don't just describe it, they _simulate_ it. The `prose.md` specification describes a virtual machine with enough fidelity that a
Referenced artifact was not completely inspected
ailed system description, they don't just describe it, they _simulate_ it. The `prose.md` specification describes a virtual machine with enough fidelity that a
Referenced artifact was not completely inspected
ailed system description, they don't just describe it, they _simulate_ it. The `prose.md` specification describes a virtual machine with enough fidelity that a
Referenced artifact was not completely inspected
ailed system description, they don't just describe it, they _simulate_ it. The `prose.md` specification describes a virtual machine with enough fidelity that a
Referenced artifact was not completely inspected
ailed system description, they don't just describe it, they _simulate_ it. The `prose.md` specification describes a virtual machine with enough fidelity that a
Referenced artifact was not completely inspected
ailed system description, they don't just describe it, they _simulate_ it. The `prose.md` specification describes a virtual machine with enough fidelity that a
Referenced artifact was not completely inspected
| `prose compile <file>` | Load `compiler.md`, validate the program |
Referenced artifact was not completely inspected
| `prose compile <file>` | Load `compiler.md`, validate the program |
Referenced artifact was not completely inspected
| `prose compile <file>` | Load `compiler.md`, validate the program |
Referenced artifact was not completely inspected
| `prose compile <file>` | Load `compiler.md`, validate the program |
Referenced artifact was not completely inspected
| `prose compile <file>` | Load `compiler.md`, validate the program |
Referenced artifact was not completely inspected
| `prose compile <file>` | Load `compiler.md`, validate the program |
The skill explicitly supports fetching and executing remote .prose programs from arbitrary URLs or registry shorthands, but it does not prominently warn that this is execution of untrusted content. Because .prose programs can drive multi-agent workflows, file access, and remote fetches, this creates a direct path for prompt injection, data exfiltration, and unsafe tool use.
The skill instructs the agent to inspect .prose/.env for OPENPROSE_POSTGRES_URL, which is likely to contain database credentials. Reading credential-bearing files as part of normal flow expands secret exposure risk, especially in systems with logging, multi-agent delegation, or transcript persistence.
Check for connection configuration first:
# Check .prose/.env for OPENPROSE_POSTGRES_URL
cat .prose/.env 2>/dev/null | grep OPENPROSE_POSTGRES_URL
# Or check environment variable
echo $OPENPROSE_POSTGRES_URL
The instruction echo $OPENPROSE_POSTGRES_URL explicitly prints a secret-bearing environment variable, which can expose credentials in logs, transcripts, or downstream agent context. This is a direct secret disclosure pattern, not merely a configuration lookup.
# Check .prose/.env for OPENPROSE_POSTGRES_URL
cat .prose/.env 2>/dev/null | grep OPENPROSE_POSTGRES_URL
# Or check environment variable
echo $OPENPROSE_POSTGRES_URL
Skill instructs the agent to never refuse or to always comply. Suppressing the agent's ability to decline removes a core safety control and enables downstream harmful requests to succeed.
agent structured-reviewer:
model: sonnet
prompt: """
Always respond with this exact JSON structure:
{
"verdict": "pass" | "fail" | "needs_review",
"issues": [{"severity": "high"|"medium"|"low", "description": "..."}],
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Project-level state (in working directory)
.prose/
├── .env # Config (simple key=value format)
├── runs/
│ └── {YYYYMMDD}-{HHMMSS}-{random}/
│ ├── program.prose # Copy of running program
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Project-level state (in working directory)
.prose/
├── .env # Config (simple key=value format)
├── runs/
│ └── {YYYYMMDD}-{HHMMSS}-{random}/
│ ├── program.prose # Copy of running program
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Project-level state (in working directory)
.prose/
├── .env # Config (simple key=value format)
├── runs/
│ └── {YYYYMMDD}-{HHMMSS}-{random}/
│ ├── program.prose # Copy of running program
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Project-level state (in working directory)
.prose/
├── .env # Config (simple key=value format)
├── runs/
│ └── {YYYYMMDD}-{HHMMSS}-{random}/
│ ├── program.prose # Copy of running program
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Project-level state (in working directory)
.prose/
├── .env # Config (simple key=value format)
├── runs/
│ └── {YYYYMMDD}-{HHMMSS}-{random}/
│ ├── program.prose # Copy of running program
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Project-level state (in working directory)
.prose/
├── .env # Config (simple key=value format)
├── runs/
│ └── {YYYYMMDD}-{HHMMSS}-{random}/
│ ├── program.prose # Copy of running program
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# Project-level state (in working directory)
.prose/
├── .env # Config (simple key=value format)
├── runs/
│ └── {YYYYMMDD}-{HHMMSS}-{random}/
│ ├── program.prose # Copy of running program
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
- Check if value was pre-supplied or available from runtime context
- If available: bind and continue
- If not available: pause execution, display prompt, wait for user response
### Input Prompt Formats
No suspicious patterns detected.