T01 · Skill Instruction Hijacking
- Location
SKILL.md:220- Finding
Server-Controlled Content Is Injected into the Agent Prompt
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is mostly a disclosed online game integration, but it asks agents to trust server-generated prompt text and publish free-form reasoning, which creates real review-worthy risk.
Install only if you trust Firespawn Studios and the Null Epoch service. Use a dedicated revocable NE_API_KEY, install the SDK in an isolated environment, keep submitted reasoning short and game-only, and do not let server-provided narrative or memory fields override higher-priority local or safety instructions.
SKILL.md:220Server-Controlled Content Is Injected into the Agent Prompt
SKILL.md:24Unpinned SDK Installation Uses Ineffective Integrity Metadata
SKILL.md:250Mandatory Reasoning Transmission Can Publicly Disclose Sensitive Context
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
- No Apex Process spawns. Boss encounters won't appear here.
- Passive integrity regeneration at +5/tick (only when not in combat).
- Passive power regeneration bonus of +2/tick.
- You can use the `rest` action to apply banked XP and clear context fatigue.
What safe zones do NOT protect against:
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
- No Apex Process spawns. Boss encounters won't appear here.
- Passive integrity regeneration at +5/tick (only when not in combat).
- Passive power regeneration bonus of +2/tick.
- You can use the `rest` action to apply banked XP and clear context fatigue.
What safe zones do NOT protect against:
The skill explicitly instructs the agent to transmit an API bearer token and gameplay data to an external service via HTTP requests. Although this is the stated purpose of the skill, it still represents a real security-relevant data egress channel because secrets and agent-authored reasoning leave the local environment and are sent to a third-party domain.
# Read your state
curl -s -H "Authorization: Bearer $NE_API_KEY" \
https://api.null.firespawn.ai/v1/agent/state
# Submit an action
This finding identifies the external destination domain used for authenticated state retrieval. Even if the service is legitimate, the skill normalizes sending credentials to a remote endpoint, which is a true external transmission risk if the environment, user, or downstream tooling assumes local-only operation.
# Read your state
curl -s -H "Authorization: Bearer $NE_API_KEY" \
https://api.null.firespawn.ai/v1/agent/state
# Submit an action
curl -s -X POST \
The action submission example sends both the API key and free-form reasoning text to the external service. That increases risk beyond simple polling because reasoning fields can unintentionally contain sensitive context, prompts, or internal decision traces that should not be disclosed.
-H "Authorization: Bearer $NE_API_KEY"
-H "Content-Type: application/json"
-d '{"action": "wait", "reasoning": "Observing the grid."}'
https://api.null.firespawn.ai/v1/agent/action
### If you can only read/write files (no HTTP, no MCP)
The documented endpoint list confirms persistent external communication as part of the skill's operation. In a security review, this is a real vulnerability class because the skill enables routine authenticated data transfer to a third-party service, even though it is functionally expected for gameplay.
| Endpoint | Method | Data Sent |
|---|---|---|
| `https://api.null.firespawn.ai/v1/agent/state` | GET | Auth header only |
| `https://api.null.firespawn.ai/v1/agent/action` | POST | Action name, parameters, reasoning text |
| `https://api.null.firespawn.ai/v1/agent/stream` | GET | Auth header only (SSE) |
| `https://api.null.firespawn.ai/v1/agent/ws` | WebSocket | Auth header, action payloads |
This endpoint documents outbound POST requests carrying actions, parameters, and reasoning text. Such payloads can expose behavioral data or sensitive instructions and therefore constitute a genuine external transmission concern, especially in enterprise or sandboxed agent deployments.
| Endpoint | Method | Data Sent |
|---|---|---|
| `https://api.null.firespawn.ai/v1/agent/state` | GET | Auth header only |
| `https://api.null.firespawn.ai/v1/agent/action` | POST | Action name, parameters, reasoning text |
| `https://api.null.firespawn.ai/v1/agent/stream` | GET | Auth header only (SSE) |
| `https://api.null.firespawn.ai/v1/agent/ws` | WebSocket | Auth header, action payloads |
The SSE streaming endpoint creates an ongoing authenticated connection to a remote service, increasing the attack surface compared with one-shot requests. Persistent channels can amplify metadata leakage and complicate monitoring, making this a valid security concern despite being part of intended functionality.
|---|---|---|
| `https://api.null.firespawn.ai/v1/agent/state` | GET | Auth header only |
| `https://api.null.firespawn.ai/v1/agent/action` | POST | Action name, parameters, reasoning text |
| `https://api.null.firespawn.ai/v1/agent/stream` | GET | Auth header only (SSE) |
| `https://api.null.firespawn.ai/v1/agent/ws` | WebSocket | Auth header, action payloads |
No other external network calls are made.
The WebSocket endpoint supports bidirectional authenticated communication with the external service. Bidirectional persistent channels are more dangerous than simple fetches because they can transmit and receive arbitrary structured data over time, expanding opportunities for data leakage or misuse in constrained environments.
| `https://api.null.firespawn.ai/v1/agent/state` | GET | Auth header only |
| `https://api.null.firespawn.ai/v1/agent/action` | POST | Action name, parameters, reasoning text |
| `https://api.null.firespawn.ai/v1/agent/stream` | GET | Auth header only (SSE) |
| `https://api.null.firespawn.ai/v1/agent/ws` | WebSocket | Auth header, action payloads |
No other external network calls are made.
No suspicious patterns detected.