Denon AVR Control

Security checks across static analysis, malware telemetry, and agentic risk

Overview

The skill mostly matches its Denon-control purpose, but one DLNA push helper can expose an entire local folder over the LAN while presenting the workflow as sharing a single chosen file.

Install only if you are comfortable letting the agent control your Denon receiver and, for DLNA features, share local music over your LAN. Be especially careful with the experimental push mode: use a dedicated music folder, run stop after playback, and avoid folders containing private files.

Static analysis

No static analysis findings were reported for this release.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Risk analysis

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

Other devices on the same network may be able to browse or download more files from that folder than the single track the user intended to play.

Why it was flagged

The DLNA push workflow is described as exposing a selected local file, but the implementation starts Python's standard directory HTTP server rooted at the selected track's parent folder, making other files in that folder reachable over the LAN while it runs.

Skill content
http_root = track.parent
server = start_http_server(http_root, serve_ip, serve_port)
cmd = [sys.executable, '-m', 'http.server', str(port), '--bind', host, '--directory', str(root_dir)]
Recommendation

Use this only on a trusted LAN, choose files from a dedicated music-only folder, and stop the server after playback. The script should ideally be changed to serve only the selected file or clearly warn that the whole parent folder is exposed.

What this means

Local media may remain available on the LAN until the user or agent runs the stop command.

Why it was flagged

The helper intentionally leaves a local HTTP server running after pushing a track so the receiver can fetch the media.

Skill content
'note': 'HTTP server stays running so the Denon can fetch the file. Use stop to terminate it.'
Recommendation

Run the documented stop command when playback is finished and avoid starting the server from folders containing private non-music files.

What this means

If invoked incorrectly, the agent could change the receiver's power, input, or volume unexpectedly.

Why it was flagged

The skill can change receiver state, including power, volume, input, mute, and raw Denon commands; the instructions acknowledge this and include a reasonable guardrail.

Skill content
Send one mutating action at a time unless the user explicitly wants a batch.
Recommendation

Confirm the receiver IP/hostname and the exact requested action before allowing mutating commands, especially raw commands or volume changes.

What this means

Music folder paths and track names may remain in local state after playback.

Why it was flagged

The local playback helper stores selected roots, search queries, and track paths in a persistent OpenClaw state file.

Skill content
STATE_FILE = STATE_DIR / 'local-audio-jukebox.json'
...
'root': str(root),
'query': args.query,
'tracks': [str(t) for t in tracks]
Recommendation

Treat the saved state as local playback history and clear ~/.openclaw/state entries if those paths or track names are sensitive.