T06 · System Persistence
- Location
cron-setup.md:20- Finding
Persistent Autonomous Agent Jobs Can Publish Content Without Per-Run Approval
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is legitimate social-media automation, but it needs review because it can publish or delete live content, set up recurring autonomous posting, and uses risky credential/config loading.
Install only if you are comfortable giving the skill authority over connected social accounts. Start with test accounts or draft/self-only modes, avoid enabling the cron jobs until you add explicit approval before posting, protect and rotate GENVIRAL_API_KEY if exposed, do not store secrets in shared or committed env files, keep the API base URL pinned to Genviral, and manually confirm any delete or bulk-delete operation.
cron-setup.md:20Persistent Autonomous Agent Jobs Can Publish Content Without Per-Run Approval
scripts/genviral.sh:176Automatic Sourcing of a Global Environment File Enables Arbitrary Shell Execution
scripts/genviral.sh:218Unvalidated Configurable API Endpoint Can Receive the Genviral Bearer Token
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
1. **Hook Selection:** Read `hooks/library.json` and pick a hook. Rotate through categories.
2. **Prompt Assembly:** Use the selected hook to build a full slideshow prompt. Reference `prompts/slideshow.md`.
3. **Generate Slideshow:** Run `generate` with the assembled prompt.
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
# Slideshow Prompt Templates
Use these templates when generating slideshows via the genviral API. Before using any template:
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).
analytics-target-create POST /analytics/targets
analytics-target GET /analytics/targets/{id}
analytics-target-update PATCH /analytics/targets/{id}
analytics-target-delete DELETE /analytics/targets/{id}
analytics-target-refresh POST /analytics/targets/{id}/refresh
analytics-refresh | get-analytics-refresh
GET /analytics/refreshes/{id}
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).
require_arg "id" "$pack_id"
warn "Deleting pack $pack_id..."
api_call DELETE "/packs/${pack_id}" >/dev/null
ok "Pack deleted."
}
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).
warn "Deleting image $image_id from pack $pack_id..."
api_call DELETE "/packs/${pack_id}/images/${image_id}" >/dev/null
ok "Image deleted from pack."
}
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).
require_arg "id" "$template_id"
warn "Deleting template $template_id..."
api_call DELETE "/templates/${template_id}" >/dev/null
ok "Template deleted."
}
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).
require_arg "id" "$slideshow_id"
warn "Deleting slideshow $slideshow_id..."
api_call DELETE "/slideshows/${slideshow_id}" >/dev/null
ok "Slideshow deleted."
}
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).
warn "Deleting analytics target $id..."
local response
response="$(api_call DELETE "/analytics/targets/${id}")"
ok "Analytics target deleted"
printf '%s' "$response" | jq '.data'
The quick-start examples include render and create-post commands that can immediately publish media to connected accounts, but they are presented like routine setup steps without an explicit live-posting warning. Because this skill's purpose is cross-platform publishing, a user or downstream agent could run these commands assuming they are harmless examples, leading to unintended public posts on TikTok, Instagram, or other linked platforms.
The README explicitly promotes unattended cron-based automation of the full pipeline, including generate, render, review, and post, but does not clearly warn that this can publish content to real connected social accounts without human approval. In a skill designed to operate across multiple platforms, this omission materially increases the chance of accidental mass posting, brand damage, policy violations, or abuse if the skill is misconfigured or invoked in the wrong environment.
The skill exposes extensive shell-based capabilities through a bash wrapper but does not declare any tool scope or permissions boundary. This increases the chance an agent invokes networked or state-changing commands without explicit policy gating, especially because the skill includes upload, posting, deletion, and analytics actions.
The description claims support for posting to 'any supported platform,' which is overly broad and can cause an agent to over-trust the skill's applicability or perform actions against unintended account types. In a posting automation skill, ambiguous scope increases operational risk because agents may assume capabilities or compatibility that have not been clearly bounded.
The skill documents immediate publishing, scheduling, retry, and deletion workflows without a strong up-front warning that these are live, externally visible, and potentially destructive actions. In an automation context, an agent could publish content or delete posts with insufficient user awareness or confirmation, causing reputational or operational harm.
The upload section explains how to transfer local files to Genviral's CDN but does not clearly warn that selected files leave the local environment and are transmitted to third-party infrastructure. This creates privacy and data handling risk if an agent uploads sensitive, proprietary, or personal media without the user understanding the destination and retention implications.
This is a real safety issue because the file provides ready-to-run cron jobs that will autonomously generate content, post to external social media accounts, and modify local tracking files without an explicit warning about unattended actions. In this skill's context, the risk is heightened because the scheduled prompts instruct the agent to make publishing and file-update decisions automatically, which can lead to unauthorized posts, brand damage, or persistent bad state in local data if the workflow misfires.
The configuration hard-codes language: "en", which imposes a specific language choice without indicating user selection, opt-in, or justification. This is a natural-language policy concern because it can override user locale expectations without offering a choice.
The script sources ${HOME}/.config/env/global.env during startup, which executes arbitrary shell content from the local host rather than merely reading configuration. In an agent skill context, this expands scope from Partner API automation into host-side secret access and code execution via a user-controlled file, increasing the blast radius well beyond the advertised functionality.
The script performs irreversible deletion of a pack immediately after printing a warning message, but does not require user confirmation or an explicit force flag. Under the code-file criteria, destructive operations should include some user disclosure safeguard; a warning-only log is weaker than an interactive confirmation for irreversible deletes, especially in a broad automation wrapper.
This command deletes a pack image immediately after logging a warning, with no prompt or opt-in flag to confirm the irreversible action. Because the operation modifies remote user data, the current disclosure is minimal and does not ensure the user intended the deletion.
The delete-template command performs an irreversible remote deletion with only a warning log before execution. For destructive operations in code files, a clearer user-facing safeguard such as confirmation or an explicit force option is appropriate to prevent accidental data loss.
The command deletes a slideshow after emitting a warning, but there is no confirmation step before the irreversible API call. Since this removes user content remotely, accidental invocation could lead to unwanted data loss without sufficient runtime disclosure.
This bulk deletion command can remove up to 50 posts but only emits a warning before submitting the delete request. The lack of confirmation or a force-style acknowledgment is a missing user warning for a high-impact destructive operation affecting multiple remote resources.
The command deletes an analytics target after a warning log but offers no confirmation prompt or explicit user acknowledgment. For irreversible remote deletions, this is insufficient protection against accidental command execution.
The setup guide instructs users to persist an API key in an environment file without warning that the value contains a secret credential that must be protected from source control, shared machines, backups, and logs. In a skill that automates posting and account management across social platforms, exposure of this key could let an attacker create, modify, or schedule content and access connected account data through the Genviral API.
This manifest config enables posting every day of the week at a configured time, but it does not document any limiting conditions, exclusion cases, or narrower activation context for when automated posting should or should not occur. For manifest files, missing specificity on trigger scope or constraints can lead to unintended skill invocation or execution patterns.