Back to skill

Security audit

desktop-pilot

Security checks for vulnerabilities and agentic risk

Overview

ClawScan rates this skill suspicious because scanners report input controls and cancellation weaknesses beyond the described desktop automation, with some files only partly analyzed.

The verdict is suspicious, not malicious. Before installing, consider whether you are comfortable with the reported input-lock capability and the cancellation weaknesses; the scanner's partial coverage means other behavior was not fully assessed.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/browser/overlay.js
Finding

Untrusted page scripts can defeat the user's Stop control

Content
View full analysis

Impact

A hostile webpage can cause automation to continue after the user requests cancellation, allowing subsequent task actions to proceed against the user's current authorization.

Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (16)

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Blocking physical user input is a materially distinct capability from displaying a status overlay or generating automated input, and it is not disclosed in the description. The remaining commands match the declared purpose. The supplied chunk documents this lock behavior but does not include its underlying implementation.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The desktop actions, temporary script staging, and overlay heartbeat handling support the declared purpose. However, requesting suppression of the user's input is materially different from merely displaying an 'agent is working' overlay and is not disclosed in the description. The supplied shell code creates and removes input-lock flags and exposes lock-related options; the actual input-blocking implementation resides in the referenced overlay.ps1, which was not supplied.

Content

No source excerpt is available for this finding.

Incomplete referenced artifact analysis

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 46)May include surrounding context.

md
`scripts/browser/overlay.js` draws the same glow + status pill with a Stop button inside the page, for browser automation (Playwright, CDP, Puppeteer, OpenClaw

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
98% confidence
Finding

Starting the overlay unconditionally deletes stop.flag before checking whether an overlay is already running. An ordinary or automatic restart therefore clears a user's cancellation request without the explicit resume operation promised by the interface, permitting automation to continue on paths that rely on this flag.

Content

Scanner excerpt · scripts/desktop.sh (reported line 59)May include surrounding context.

sh
case "$SUB" in
    start)
      cp "$HERE/windows/overlay.ps1" "$OV_L/../overlay.ps1"
      rm -f "$OV_L/stop.flag" "$OV_L/quit.flag"
      if [[ -n "${O[lock]:-}" && "${O[lock]}" != 0 ]]; then touch "$OV_L/lock.flag"; else rm -f "$OV_L/lock.flag"; fi
      printf '%s' "${O[text]:-${DESKTOP_PILOT_OVERLAY_TEXT:-Agent is working...}}" > "$OV_L/text.txt"
      touch "$OV_L/beat"

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
95% confidence
Finding

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).

Content

Scanner excerpt · scripts/desktop.sh (reported line 60)May include surrounding context.

sh
start)
      cp "$HERE/windows/overlay.ps1" "$OV_L/../overlay.ps1"
      rm -f "$OV_L/stop.flag" "$OV_L/quit.flag"
      if [[ -n "${O[lock]:-}" && "${O[lock]}" != 0 ]]; then touch "$OV_L/lock.flag"; else rm -f "$OV_L/lock.flag"; fi
      printf '%s' "${O[text]:-${DESKTOP_PILOT_OVERLAY_TEXT:-Agent is working...}}" > "$OV_L/text.txt"
      touch "$OV_L/beat"
      if overlay_alive; then echo "OK overlay already running (text updated)"; return; fi

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
95% confidence
Finding

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).

Content

Scanner excerpt · scripts/desktop.sh (reported line 64)May include surrounding context.

sh
printf '%s' "${O[text]:-${DESKTOP_PILOT_OVERLAY_TEXT:-Agent is working...}}" > "$OV_L/text.txt"
      touch "$OV_L/beat"
      if overlay_alive; then echo "OK overlay already running (text updated)"; return; fi
      rm -f "$OV_L/pid"
      local extra="'-IdleSeconds','${O[idle]:-120}'"; [[ -n "${O[capture]:-}" ]] && extra+=",'-VisibleInCapture'"
      [[ -n "${O[lock-idle]:-}" ]] && extra+=",'-LockIdleSeconds','${O[lock-idle]}'"
      "$OV_PS" -NoProfile -Command "Start-Process -WindowStyle Hidden powershell -ArgumentList '-NoProfile','-STA','-ExecutionPolicy','Bypass','-File','${OV_WTEMP}desktop-pilot\\overlay.ps1','-Dir','$OV_W',$extra" >/dev/null

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
95% confidence
Finding

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).

Content

Scanner excerpt · scripts/desktop.sh (reported line 75)May include surrounding context.

sh
printf '%s' "${O[text]}" > "$OV_L/text.txt"; touch "$OV_L/beat"; echo "OK overlay text updated" ;;
    stop)
      if overlay_alive; then touch "$OV_L/quit.flag"; local i; for i in $(seq 1 15); do overlay_alive || break; sleep 0.3; done
        overlay_alive && { "$OV_PS" -NoProfile -Command "Stop-Process -Id $(tr -d '\r\n ' < "$OV_L/pid") -Force" >/dev/null; rm -f "$OV_L/pid"; }
        echo "OK overlay stopped"
      else rm -f "$OV_L/pid"; echo "OK overlay not running"; fi
      rm -f "$OV_L/quit.flag" ;;

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · scripts/desktop.sh (reported line 75)May include surrounding context.

sh
printf '%s' "${O[text]}" > "$OV_L/text.txt"; touch "$OV_L/beat"; echo "OK overlay text updated" ;;
    stop)
      if overlay_alive; then touch "$OV_L/quit.flag"; local i; for i in $(seq 1 15); do overlay_alive || break; sleep 0.3; done
        overlay_alive && { "$OV_PS" -NoProfile -Command "Stop-Process -Id $(tr -d '\r\n ' < "$OV_L/pid") -Force" >/dev/null; rm -f "$OV_L/pid"; }
        echo "OK overlay stopped"
      else rm -f "$OV_L/pid"; echo "OK overlay not running"; fi
      rm -f "$OV_L/quit.flag" ;;

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
95% confidence
Finding

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).

Content

Scanner excerpt · scripts/desktop.sh (reported line 77)May include surrounding context.

sh
if overlay_alive; then touch "$OV_L/quit.flag"; local i; for i in $(seq 1 15); do overlay_alive || break; sleep 0.3; done
        overlay_alive && { "$OV_PS" -NoProfile -Command "Stop-Process -Id $(tr -d '\r\n ' < "$OV_L/pid") -Force" >/dev/null; rm -f "$OV_L/pid"; }
        echo "OK overlay stopped"
      else rm -f "$OV_L/pid"; echo "OK overlay not running"; fi
      rm -f "$OV_L/quit.flag" ;;
    clear) rm -f "$OV_L/stop.flag"; echo "OK stop flag cleared" ;;
    lock)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
95% confidence
Finding

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).

Content

Scanner excerpt · scripts/desktop.sh (reported line 78)May include surrounding context.

sh
overlay_alive && { "$OV_PS" -NoProfile -Command "Stop-Process -Id $(tr -d '\r\n ' < "$OV_L/pid") -Force" >/dev/null; rm -f "$OV_L/pid"; }
        echo "OK overlay stopped"
      else rm -f "$OV_L/pid"; echo "OK overlay not running"; fi
      rm -f "$OV_L/quit.flag" ;;
    clear) rm -f "$OV_L/stop.flag"; echo "OK stop flag cleared" ;;
    lock)
      overlay_alive || die "overlay is not running (overlay start first)"

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
95% confidence
Finding

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).

Content

Scanner excerpt · scripts/desktop.sh (reported line 79)May include surrounding context.

sh
echo "OK overlay stopped"
      else rm -f "$OV_L/pid"; echo "OK overlay not running"; fi
      rm -f "$OV_L/quit.flag" ;;
    clear) rm -f "$OV_L/stop.flag"; echo "OK stop flag cleared" ;;
    lock)
      overlay_alive || die "overlay is not running (overlay start first)"
      touch "$OV_L/lock.flag" "$OV_L/beat"; echo "OK input lock requested (engages with your next action, releases 8 s after the last one; Esc held 1.5 s or Stop releases it)" ;;

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
95% confidence
Finding

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).

Content

Scanner excerpt · scripts/desktop.sh (reported line 83)May include surrounding context.

sh
lock)
      overlay_alive || die "overlay is not running (overlay start first)"
      touch "$OV_L/lock.flag" "$OV_L/beat"; echo "OK input lock requested (engages with your next action, releases 8 s after the last one; Esc held 1.5 s or Stop releases it)" ;;
    unlock) rm -f "$OV_L/lock.flag"; echo "OK input lock released" ;;
    selftest)
      cp "$HERE/windows/overlay.ps1" "$OV_L/../overlay.ps1"
      "$OV_PS" -NoProfile -STA -ExecutionPolicy Bypass -File "${OV_WTEMP}desktop-pilot\\overlay.ps1" -Dir "$OV_W" -SelfTest | tr -d '\r' ;;

The documented Stop guarantee is not enforced for native Windows actions.

High
Category
Excessive Agency
Confidence
99% confidence
Finding

The wrapper calls overlay_hook only in the WSL branch; native Windows proceeds to desktop.ps1 without checking the user's stop flag. Consequently, this wrapper does not enforce the promised cancellation barrier for native Windows, allowing subsequent desktop actions unless the unavailable downstream script independently implements that check.

Content

No source excerpt is available for this finding.

The advertised status overlay can also suppress the user's physical keyboard and mouse input system-wide.

High
Category
Excessive Agency
Confidence
98% confidence
Finding

The manifest describes desktop automation and an informational overlay, but these handlers swallow physical keystrokes and mouse buttons/wheel events while allowing injected input through. Lines L273–L279 activate this behavior when lock.flag exists and the heartbeat is recent; although timeout and emergency-release safeguards exist, blocking the user's input is materially beyond displaying status or issuing automated desktop actions.

Content

No source excerpt is available for this finding.

The overlay exposes input-lock controls beyond the manifest's display-only overlay description.

Medium
Category
Excessive Agency
Confidence
94% confidence
Finding

The manifest describes showing an "agent is working" overlay, but the lock action creates a lock.flag request explicitly described as suppressing user input. The start action also supports this mode at L060 and describes its input-blocking effect at L069; requesting suppression of human input is materially different from displaying status or generating automated input.

Content

No source excerpt is available for this finding.

Scope Creep

Low
Category
Excessive Agency
Confidence
70% confidence
Finding

Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Content

Scanner excerpt · LICENSE (reported line 9)May include surrounding context.

text
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.