T01 · Skill Instruction Hijacking
- Location
SKILL.md:216- Finding
Remote Server Content Is Injected into the Agent Prompt
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This game skill is mostly transparent about its network use, but it asks agents to place server-generated text into prompts, including a system prompt, which needs careful review before use.
Install only if you trust Firespawn Studios and the tne-sdk package. Do not place server-provided narrative, survival, memory, message, or player text into a system/developer prompt; pass it as clearly delimited game data. Prefer direct HTTP polling or a pinned, reviewed SDK version, keep NE_API_KEY scoped and revocable, and avoid putting secrets or private context in action reasoning.
SKILL.md:216Remote Server Content Is Injected into the Agent Prompt
SKILL.md:76Unpinned Third-Party SDK Is Installed and Executed
references/ACTIONS.md:355Webhook Signature Verification Uses an Optimization-Removable Assertion
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 instructs the agent to send an API key in an Authorization header to an external service and to transmit action/reasoning data off-host. This is an intentional capability of the skill, but it is still a real external data transmission risk because secrets and user-generated content leave the local environment and depend on the trustworthiness of the remote service.
# 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 hostname used by the skill. Even though the domain is documented and appears first-party for the game, directing an agent to connect to an external endpoint with a bearer token creates a genuine exfiltration surface if the endpoint, DNS, or surrounding configuration is compromised.
# 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 POST action example transmits not only the bearer token but also free-form reasoning text to the remote API. Free-form fields are especially sensitive because they can inadvertently include secrets, internal prompts, or other contextual data that should not leave the agent environment.
-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 endpoint inventory confirms regular outbound communication to an external service for state retrieval. In context this is expected game functionality, but it still represents a true security-relevant behavior because authenticated state access depends on protecting the API key and trusting the remote operator.
| 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 handles action submission and therefore causes outbound transmission of user/agent decisions and associated metadata. Because the skill encourages continual autonomous play, repeated authenticated submissions increase the impact of misuse, accidental disclosure, or abuse of the token.
| 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 stream endpoint enables persistent authenticated outbound connectivity. Persistent channels increase exposure compared with one-off requests because they create longer-lived sessions that may leak timing, state updates, and other telemetry to the service.
|---|---|---|
| `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 similarly establishes an authenticated bidirectional session with the external service. Bidirectional persistent transport broadens the attack surface because remote messages can continuously influence agent behavior, and the session carries the same bearer-token trust assumptions as the REST endpoints.
| `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.