Back to skill

Security audit

Instagram Creator Video Insights

Security checks for vulnerabilities and agentic risk

Overview

ClawScan rates this skill benign with medium confidence: most checks were favorable, but it found an undeclared network capability and the scan was partial, so the evidence is incomplete.

The verdict is benign, not a guarantee of safety. Before installing, consider the medium confidence and partial scan: one component was only partly inspected, some instruction text could not be evaluated, and the skill’s network capability has no declared tool scope.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (8)

Skill declares no tool scope ('permissions' or 'allowed-tools') but code capabilities were detected: network.

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

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.

Content

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

md
>
> For detailed steps, see the [OpenClaw setup guide](https://github.com/apismith-labs/instagram-ai-agent-skills/blob/main/docs/platforms/openclaw.md).

Do not start an Actor until the user completes setup and a usable Apify tool is available. Never ask the user to send an API Key in chat. After setup, open a new OpenClaw conversation or refresh available tools before retrying. Check the default Agent with `openclaw skills check`; if needed, specify one with `openclaw skills check --agent YOUR_AGENT_ID`. In a new session, invoke `$instagram-creator-reels-insights`. For directory or Agent permission questions, follow the [project OpenClaw guide](https://github.com/apismith-labs/instagram-ai-agent-skills/blob/main/docs/platforms/openclaw.md).

## Readiness and usage safeguards

Unbounded Output

Medium
Category
Output Handling
Confidence
60% confidence
Finding

Output size or generation rate is not bounded. Unbounded output enables denial-of-service through resource exhaustion, log flooding, or context-window stuffing.

Content

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

md
remains unverified. Preserve each run boundary, submitted account mapping, exact run status, all raw returned rows (including original `type` and `productType` values), and any explicit Dataset completeness evidence. Set `retrieval_complete` to `true` only with traceable host/Actor evidence that the Dataset was fully read; the helper checks only evidence-object shape and cannot authenticate its truth. Do not infer completeness from `SUCCEEDED`, a count below `resultsLimit`, an empty result, or no truncation marker. Missing pagination metadata or extra completeness flags do not block processing exact-Video records after retrieval, but do not claim a full time-window scan. If the run is `SUCCEEDED`, the Dataset has been fully read, and that Creator's raw returned row count is below `resultsLimit`, report in the user's language that the Actor-returned data was fully read and the configured result limit was not reached. This says only that the returned Dataset was read and the configured

Unbounded Output

Medium
Category
Output Handling
Confidence
60% confidence
Finding

Output size or generation rate is not bounded. Unbounded output enables denial-of-service through resource exhaustion, log flooding, or context-window stuffing.

Content

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

md
te` is tri-state: `false` means positively incomplete, while `null` or omission means unknown. An explicit `false` remains `false` when evidence is insufficient; if it conflicts with otherwise reliable complete evidence, keep `false` and set `retrieval_completeness_conflict: true`. Set it to `true` only when JSON is complete and either `dataset_total` equals `model_visible_rows`, or all pages were actually read (`all_pages_read: true`) and the terminal page says `has_more: false`; there must be no truncation, cursor conflict, or count contradiction. A claimed `true` that conflicts with an observed incomplete signal stays fail-closed (`false` for explicit truncation, otherwise `null`) and sets the conflict flag. The normalized `retrieval_complete_evidence` object must include non-empty `source` and `detail`, and may also include `dataset_total`, `result_count`, `returned_items`, `model_visible_rows`, `truncated`, `truncation_marker_detected`, `truncation_markers`, `json_complete`, `has_

Unbounded Output

Medium
Category
Output Handling
Confidence
60% confidence
Finding

Output size or generation rate is not bounded. Unbounded output enables denial-of-service through resource exhaustion, log flooding, or context-window stuffing.

Content

Scanner excerpt · references/workflow.md (reported line 27)May include surrounding context.

md
uncated: true`, `hasMore: true`, or a source count greater than model-visible rows is explicit incomplete evidence: set `retrieval_complete=false` and retain the observed source/detail. `truncation_markers` is the list of non-empty marker strings actually observed; every non-empty valid list means incomplete, even if its marker text was not previously known. If no such signal exists but there is no reliable total or terminal-page evidence, use `null`/unknown; absence of a marker is not proof of no truncation.

For paginated tools, continue using each `nextOffset` until a reliable terminal signal. `next_offset` must be `null` or a non-negative integer; strings, objects, negative numbers, and Booleans are invalid. The current evidence contract recognizes normalized `next_offset_kind` values `exact` and `speculative` (trim surrounding whitespace and compare case-insensitively); unknown values cannot establish completeness. `nextOffsetKind="speculative"` only permits probing a possible nex

Unbounded Output

Medium
Category
Output Handling
Confidence
60% confidence
Finding

Output size or generation rate is not bounded. Unbounded output enables denial-of-service through resource exhaustion, log flooding, or context-window stuffing.

Content

Scanner excerpt · references/workflow.md (reported line 35)May include surrounding context.

md
exact `run_status`, all raw `posts`, and optional `retrieval_complete` evidence. Preserve raw rows and source/run status. For discovery, `retrieval_complete` is tri-state: `true`, `false`, or `null` (unknown; omission is also unknown). The helper requires non-empty `source` and `detail` in the evidence object. It accepts `true` only when `json_complete=true` and either `dataset_total` equals the helper's actual `model_visible_rows`, or `all_pages_read=true` with terminal `has_more=false`, with no truncation, cursor conflict, or count conflict. Explicit truncation/more-pages/count-gap evidence makes it `false`; absent or insufficient proof remains `null`. An explicit input `false` remains false when the evidence has no complete-read proof; if reliable complete evidence contradicts it, the status stays false and `retrieval_completeness_conflict` is true. A claimed `true` that conflicts with explicit incomplete or inconsistent evidence is fail-closed and carries the conflict flag. Preser

Unbounded Output

Medium
Category
Output Handling
Confidence
60% confidence
Finding

Output size or generation rate is not bounded. Unbounded output enables denial-of-service through resource exhaustion, log flooding, or context-window stuffing.

Content

Scanner excerpt · references/workflow.md (reported line 29)May include surrounding context.

md
al` cannot override that conflict. Set `retrieval_completeness_conflict=true` and never `retrieval_complete=true` for such evidence. `retrieval_complete=false` remains false when evidence is insufficient; when it conflicts with otherwise reliable complete evidence, retain false and mark the conflict. A complete read requires complete JSON and either an exact `dataset_total == model_visible_rows` match or traceable evidence that all pages were read and the terminal page reported `hasMore=false`, without truncation, cursor conflict, or count contradictions. Any non-empty valid `truncation_markers` list is explicit incomplete evidence. Normalize evidence into `retrieval_complete_evidence` with non-empty `source` and `detail`, plus applicable fields: `dataset_total`, `result_count`, `returned_items`, `model_visible_rows`, `truncated`, `truncation_marker_detected`, `truncation_markers`, `json_complete`, `has_more`, `all_pages_read`, `next_offset`, and `next_offset_kind`. The helper validate

Scope Creep

Low
Category
Excessive Agency
Confidence
75% 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 · references/workflow.md (reported line 55)May include surrounding context.

md
## Transcript batches and reconciliation

Re-read live Transcript Actor schema and account limits. Build batches only from selected, deduplicated URLs and within a batch size supported by the live Actor schema/account. Split batches internally when supported; do not hide calls, automatically retry, or expand scope. Reconcile against the full submitted list so each post gets a result even when the Actor returned no row. Use exact/canonical URL first, then only the verified post ID kind (code or pk); never use result order. Distinguish explicit empty text, missing text, invalid structure, segment-only results and Actor error, no returned row, duplicate rows, identity conflict, unmatched URL and Dataset incompleteness. Preserve valid segments when top-level text is absent, but do not concatenate them unless the live contract proves a safe delimiter. Never interpret missing text as no speech. Do not retry automatically.

A complete transcript Dataset count requires terminal run state plus