Paper Report Delivery

ReviewAudited by ClawScan on May 10, 2026.

Overview

The skill mostly matches a Telegram paper-report workflow, but it should be reviewed because the HTML builder can embed arbitrary local file paths from report data before those reports are delivered to Telegram.

Before installing or running delivery, verify the Telegram target, inspect the generated HTML/message files, and constrain image embedding to trusted report asset directories so private local files cannot be included accidentally.

Findings (3)

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

If report input data is wrong or malicious, private local files could be embedded in the generated report and then posted to Telegram.

Why it was flagged

The HTML builder will read and embed any existing file path passed to the helper, without an allowlist, root-directory check, image-only check, or size limit. Since the workflow later sends generated HTML reports to Telegram, an unexpected path in report data could leak a local file.

Skill content
path = Path(path_str)
if not path.exists() or not path.is_file():
    return ''
...
encoded = base64.b64encode(path.read_bytes()).decode('ascii')
Recommendation

Restrict embedded files to a known assets/image directory, reject absolute paths and parent-directory traversal, verify image MIME/type and size, and review generated HTML before sending.

What this means

Reports may be sent under your configured Telegram bot/account to the specified target.

Why it was flagged

The send wrapper uses the configured OpenClaw Telegram channel authority to post messages and media. This is expected for a Telegram delivery skill, but it uses whichever account/bot permissions are configured locally.

Skill content
CHANNEL="${CHANNEL:-telegram}"
...
openclaw message send --channel "$CHANNEL" --target "$TARGET" --message "$MESSAGE" --media "$MEDIA_PATH" --json
Recommendation

Use a least-privileged Telegram bot or channel configuration, set the target explicitly, and avoid running the send step until you have verified the destination.

What this means

Report content and attached HTML leave the local machine and are shared with the configured Telegram chat.

Why it was flagged

Generated report files and message chunks are intentionally sent to an external Telegram target. The destination is configurable and disclosed, but it is still a data boundary users should notice.

Skill content
TARGET = os.environ.get('TELEGRAM_TARGET', 'telegram:<target-chat-id>')
...
proc = send(TARGET, HTML_MESSAGES[idx], part)
Recommendation

Confirm the Telegram target and inspect outputs before delivery, especially if reports may contain private notes, unpublished research, or local file embeds.