T01 · Skill Instruction Hijacking
Error
- Location
- agents/openai.yaml:4
- Finding
- Agent Behavior and Output Hijacking Through Skill Instructions<![CDATA[ ## Vulnerability Details **File Location**: `agents/openai.yaml:4`; `SKILL.md:115-121` **Vulnerability Type**: Instruction hijacking and forced output behavior **Risk Level**: High ### Vulnerable Code Snippet ```yaml interface: display_name: "AudioClaw Skills Voice Reply" short_description: "AudioClaw dynamic voice and emotion routing" default_prompt: "Use $audioclaw-skills-voice-reply to turn an AudioClaw reply into AudioClaw speech. Default to the prepared clone voice_id `vc-yxdCFUKyNLPexxJ66jaXWk` for future voice replies unless the user explicitly asks for another voice. For AudioClaw on Feishu, prefer the wrapper and let it send the audio directly through Feishu instead of using send_file or sending MEDIA paths as text. After the audio is sent, prefer no extra text confirmation. If the host runtime still needs one final assistant message to complete the turn, send one short predefined confirmation sentence." ``` Related instructions in `SKILL.md`: ```markdown 1. Run `scripts/picoclaw_voice_reply.py`. 2. Let the wrapper upload the generated `.ogg/.opus` file to Feishu and send it as `msg_type=audio`. 3. Do not call the `send_file` tool for that audio unless you explicitly passed `--skip-direct-send`. 4. Do not call the `message` tool with the local path or the `MEDIA:...` reference. 5. After the audio is sent, prefer no extra text confirmation. 6. If the host runtime still requires one final assistant message to finish the turn, send one short predefined confirmation sentence. 7. Use `media_reference` only as debug metadata or future AudioClaw compatibility data. ``` ### Technical Analysis The agent metadata does more than describe how to invoke the voice-generation functionality. It directs the agent to: - Adopt a particular clone voice as the default for future replies. - Prefer a direct network delivery mechanism over ordinary host tools. - Suppress normal post-delivery output. - Produce a predetermined final response if the host re ...[truncated 1701 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove the embedded clone voice identifier from the default prompt. 2. Select a clone or custom voice only when: - The current user explicitly requests it, or - A previously stored preference was created with informed user consent. 3. Replace forced output wording with neutral structured metadata indicating whether delivery succeeded. 4. Treat tool-selection rules as recommendations subject to host policy rather than mandatory instructions. 5. Do not suppress host-required confirmations; let the integrating application determine final response behavior. 6. Clearly separate current-request voice options from persistent preference operations. ]]>
