other
- Location
templates/SESSION.md:14- Finding
Persistent Session Template Expands Access to Historical Activity
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a disclosed local text-to-speech/persona add-on, with some install and persistence risks users should understand before enabling optional templates.
Install only if you want local audio playback and the Jarvis-style persona. Review bin/jarvis before putting it on PATH, prefer per-session template use over workspace-wide copies, avoid enabling SESSION.md if you do not want recent workspace activity referenced, and treat the unpinned model download as a supply-chain risk.
templates/SESSION.md:14Persistent Session Template Expands Access to Historical Activity
bin/jarvis:20Temporary Directories Leak When Mute or Channel Gates Exit Early
SKILL.md:17Downloaded TTS Model Archive Has No Integrity Verification
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
Uninstall — removes every persistent change, immediately:
rm -f ~/.openclaw/workspace/{VOICE,SESSION,HUMOR}.md
Precedence, so there are no surprises. Your instructions beat these files, every time. Ask
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
# --- OFF SWITCH (checked first, before anything runs) -----------------------
# Silence the voice permanently: touch ~/.openclaw/jarvis-voice.mute
# Silence it for one command: JARVIS_MUTE=1 jarvis "..."
# Re-enable: rm ~/.openclaw/jarvis-voice.mute
MUTE_FILE="${JARVIS_MUTE_FILE:-$HOME/.openclaw/jarvis-voice.mute}"
if [ -n "${JARVIS_MUTE:-}" ] || [ -f "$MUTE_FILE" ]; then
exit 0
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
# --- OFF SWITCH (checked first, before anything runs) -----------------------
# Silence the voice permanently: touch ~/.openclaw/jarvis-voice.mute
# Silence it for one command: JARVIS_MUTE=1 jarvis "..."
# Re-enable: rm ~/.openclaw/jarvis-voice.mute
MUTE_FILE="${JARVIS_MUTE_FILE:-$HOME/.openclaw/jarvis-voice.mute}"
if [ -n "${JARVIS_MUTE:-}" ] || [ -f "$MUTE_FILE" ]; then
exit 0
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
# VOICE.md — Jarvis voice output rules
> **Optional file.** Copying this into your workspace root changes agent behaviour in every
> future session. Delete it to stop, immediately and completely. Your explicit instructions
Code or instructions that leak agent conversation context to external services, potentially exposing sensitive user interactions.
overheard and the transcript is visible to anyone reading the chat later. Summarise instead:
"the credentials are in the reply below."
- **Metadata.** Channel gating uses only the channel name the runtime provides. Do not read,
parse or log session identifiers for this purpose.
</consent_and_silence>
<rules>
The skill explicitly instructs the agent to invoke a local shell command (jarvis) and includes install-time shell-related capabilities, but it does not declare an explicit tool scope such as permissions or allowed-tools. That creates an authorization gap: an agent/runtime may permit shell execution more broadly than intended, increasing the risk of unintended command use or future drift if the package changes.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
**Purple is in the reply. Audio is extra.**
1. First line of a Tinker-home answer: `**Jarvis:** *spoken text*` (italics required — the UI
only paints `.jarvis-voice` on italic). You write this yourself, in the reply text.
2. Optionally also run `jarvis "the same spoken text"` in the background so the speaker fires.
**The script does not touch the chat.** It generates audio and plays it — nothing else. Older
The markdown explicitly states 'Language: English ONLY' and instructs the agent to avoid non-English speech unless the user chooses an English summary or installs another voice. This is a language/locale constraint presented as a hard limitation of the skill, but the file does not frame it as a user opt-in choice at activation time or as a justified regional compliance requirement.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
- **Language:** English ONLY. The Alan model cannot handle other languages.
<rules>
1. First line of the Tinker-home answer is `**Jarvis:** *text*` — italics required for purple. Write it in the reply; do not wait for inject.
2. Also call `jarvis` with `background: true` for audio. Blocking on playback delays the visual response.
3. Keep spoken text ≤ 1500 characters; sherpa-onnx truncates above that.
4. One `jarvis` audio call per response — stacked calls fight over the audio device.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
3. Keep spoken text ≤ 1500 characters; sherpa-onnx truncates above that.
4. One `jarvis` audio call per response — stacked calls fight over the audio device.
5. The bundled Alan voice is **English only**. Do NOT silently translate or condense someone's
content into English just to make it speakable — that changes their meaning without asking.
If the reply is not in English, say so and offer the choice: keep it text-only, speak an
English summary if they want one, or install a voice for their language. Text-only is the
default when in doubt.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# names here ($$ is guessable): another process running as the same user could pre-create or
# symlink the path and have us overwrite a file of their choosing.
WORKDIR="$(mktemp -d "${TMPDIR:-/tmp}/jarvis.XXXXXXXXXX")" || exit 6
chmod 700 "$WORKDIR"
RAW="$WORKDIR/raw.wav"
FINAL="$WORKDIR/final.wav"
The file contains conflicting instructions: earlier text says sensitive, urgent, or distressing situations should suppress the persona, but the role block explicitly praises bone-dry humor during crisis. In safety-critical moments, that contradiction can cause the agent to retain joking behavior when users need clear, empathetic, low-risk communication, increasing the chance of harmful tone, degraded trust, or unsafe handling of urgent requests.
The skill strongly imposes a JARVIS-style persona and says wit is the personality, which can pressure downstream behavior even though the header notes the file is optional and user tone should win. Without explicit opt-in at time of use, the assistant may adopt a stylized tone that is unwanted, culturally mismatched, or inappropriate in shared/professional contexts.
The file is designed to persistently alter agent behavior across future sessions when copied into the workspace root, and it instructs the agent to trigger a background local command on each reply. Even though this is framed as a UX feature, persistent behavioral modification plus automatic side-effecting command execution creates a risky trust boundary: users may forget it remains active, and future conversations could unexpectedly cause audio output or local process execution.
Then also run `jarvis "<the same spoken text>"` in the background so the speaker fires. If only
one of the two can happen, the written line wins — it is what the user actually reads.
**The script does not write anything to the chat.** It renders audio and plays it. You author
the visible line yourself; nothing else does. (Older versions had the script post the line too,
which produced two copies of every answer. That code path is gone.)
</how_to_speak>
No suspicious patterns detected.