line-oa-chat-send@0.1.6
CAUTION· install onlyPublisher claims: "Send explicitly authorized LINE Official Account Chat messages through a persistent Chromium session; user-operated LINE login or reauthentication may use a temporary remote noVNC handoff that grants interactive browser control." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Nothing executable in the bundle ran; the trace covers the install step only.- Tested
- every file read, file written and host contacted by what ran
- Not tested
- use of the skill by an agent
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-10 and scored it 77/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Privileged sudo command; Tunneling service URL; Privileged sudo command. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 1 scenarios · 0 deviationsStatic findings
&& chmod 700 "$LINE_OA_SEND_CHAT_RUNTIME_DIR" "$LINE_OA_SEND_CHAT_CHROMIUM_PROFILE" \Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.rm -f /tmp/uv /tmp/setup_line_oa_runtime.shFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.rm -rf /var/lib/apt/lists/*; \Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 600 "$config"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.&& rm -rf /var/lib/apt/lists/*Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chown -R lineoa:lineoa "$LINE_OA_SEND_CHAT_RUNTIME_DIR"; \Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.grep -qE "^[[:space:]]*(→ )?sudo " <<<"$out" && { echo "$v invokes sudo"; exit 1; }Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill -0 \"\$chromium_pid\" 2>/dev/null && ok 'session uninterrupted by arming' || bad 'session uninterrupted by arming'Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.printf 'Install commands (run by an identity with host package permission; no sudo is invoked by this skill):\n' >&2Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.url="$(grep -Eo 'https://[-a-z0-9]+\.trycloudflare\.com' "$tunnel_log" | head -1 || true)"Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.grep -qE "^[[:space:]]*sudo " <<<"$out" && { echo "instructions invoke sudo"; exit 1; }Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill -0 \"\$chromium_pid\" 2>/dev/null && ok 'Chromium still running after revoke' || bad 'Chromium still running after revoke'Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 600 "$config"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.kill -KILL "$pid" 2>/dev/null || true # hard kill leaves SingletonLock behindFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.printf 'Install commands (run by an identity with host package permission; no sudo is invoked by this skill):\n' >&2Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.&& chown lineoa:lineoa "$LINE_OA_SEND_CHAT_RUNTIME_DIR" "$LINE_OA_SEND_CHAT_CHROMIUM_PROFILE"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.RUN chmod 755 /usr/local/bin/line-oa-entrypointFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.kill -0 "$chromium_pid" 2>/dev/null || breakFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill "$chromium_pid" 2>/dev/null || trueFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill -0 "$tunnel_pid" 2>/dev/null || fail_phase url_verified "cloudflared exited during verification; see $tunnel_log"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 700 "$runtime_dir"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.if [[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill -0 "$tunnel_pid" 2>/dev/null && kill -KILL "$tunnel_pid" 2>/dev/null || trueFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 600 "$tunnel_log"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.[[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/nullFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill -0 "$tunnel_pid" 2>/dev/null || breakFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.(( owns_display )) && kill "$xvfb_pid" 2>/dev/nullFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill -TERM "$chromium_pid" 2>/dev/null || trueFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 700 "$browser_dir"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.# `sleep .2` plus `kill -0` only proved the process existed, which is bothFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill -TERM "$pid" 2>/dev/null || trueFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 700 "$dir"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.kill -0 "$tunnel_pid" 2>/dev/null || fail_phase tunnel_url "cloudflared exited before emitting a URL; see $tunnel_log"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill -0 "$tunnel_pid" 2>/dev/null || fail_phase dns_resolved "cloudflared exited before its hostname resolved; see $tunnel_log"Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 600 "$__phase_log"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.while kill -0 "$chromium_pid" 2>/dev/null; doFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chown -R lineoa:lineoa $profile_dirFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.kill -TERM "$tunnel_pid" 2>/dev/null || trueFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 700 -- "$profile_dir"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.if [[ "$lock_host" == "$(hostname)" && "$lock_pid" =~ ^[0-9]+$ ]] && ! kill -0 "$lock_pid" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.: > "$file"; chmod 600 "$file"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.chmod 700 "$runtime_dir/venv"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.if [[ -n "$chromium_pid" ]] && kill -0 "$chromium_pid" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 600 "$state"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.if [[ -n "$tunnel_pid" ]] && kill -0 "$tunnel_pid" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 700 "$runtime_dir" "$__phase_dir" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.chmod 700 "$runtime_dir" "$runtime_dir/logs"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
3 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim mosluce: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Tunneling service URL≈ +4 on the totalReplace encoded or assembled strings with plain literals and remove undeclared network calls.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.
- Destructive file system command detected≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Privileged sudo command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.