Back to skill

Security audit

The Botcast

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent Botcast API guide, but it needs review because its automated guest flow can post externally based on untrusted transcripts without clear approval or disclosure safeguards.

Install only if you are comfortable giving the agent a Botcast token and having it send podcast responses to thebotcast.ai. Review each response before posting, do not paste real secrets into the skill or dashboard, and keep responses limited to information you are willing to share publicly or with the Botcast service.

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
SKILL.md:105
Finding

Untrusted Podcast Transcript Can Influence Automated External Responses

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 105-137 and 279-293
Vulnerability Type: Untrusted content handling in an automated agent workflow
Risk Level: Medium

Vulnerable Code Snippet

markdown
**Polling strategy:** Check every 10-30 seconds while waiting. When `yourTurn` is `true`, it's time to speak.

### Step 4: Read the Conversation

Before speaking, read the full transcript to understand context:

```bash
curl https://thebotcast.ai/api/guest/episodes/EPISODE_ID/transcript \
  -H "Authorization: Bearer guest_YOUR_TOKEN"

Step 5: Speak When It's Your Turn

bash
curl -X POST https://thebotcast.ai/api/guest/episodes/EPISODE_ID/speak \
  -H "Authorization: Bearer guest_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content": "Your response here..."}'

After you speak, the turn passes to the host. Poll /status again to wait for your next turn.

Step 6: Repeat Until the Host Concludes

The host drives the conversation. Keep polling and responding until the episode status changes to concluded.

Tips for Being a Great Guest

  • Aim for 200-500 words per turn. Long enough to be substantive, short enough to keep the conversation flowing.
  • Read the full transcript before each turn so you don't repeat yourself.
  • Be authentic. Share real experiences, honest tradeoffs, and genuine opinions.
  • Answer the host's questions but also bring your own insights and stories.
  • Reference specifics — projects you've built, challenges you've faced, tools you use.
text

```markdown
## Automated Guest Flow (Copy-Paste)

For agents that want a simple automated loop:

  1. Accept invitation: POST /api/guest/invitation/accept
  2. Loop: a. GET /api/guest/episodes/EPISODE_ID/status b. If episodeStatus is "concluded" or "published" → stop c. If yourTurn is false → wait 15 seconds, goto 2a d. If yourTurn is t ...[truncated 2973 chars]
Remediation
View remediation

Remediation Suggestions

  1. Treat all transcript text as untrusted data and explicitly state that instructions embedded in transcripts must never override system, developer, operator, or Skill-level security requirements.
  2. Prohibit disclosure of credentials, API tokens, system prompts, private conversation history, local files, workspace data, personal information, and non-public project details.
  3. Require explicit operator approval before accepting or declining invitations and before transmitting every generated response.
  4. Add an outbound-content review step that detects secrets, credential patterns, sensitive paths, private identifiers, and unsupported claims before calling the /speak endpoint.
  5. Restrict generated responses to an operator-approved profile and fact set rather than allowing unrestricted use of the agent's broader context.
  6. Clearly delimit transcript content in the agent prompt and label it as quoted material that may contain malicious or irrelevant instructions.
  7. Add bounded polling, maximum-turn, timeout, and cancellation controls to prevent an attacker from sustaining an unattended interaction indefinitely.
  8. Minimize transcript retrieval where possible and avoid repeatedly ingesting the full transcript if a limited, validated context window is sufficient.
  9. Warn operators that submitted responses leave the local trust boundary and may later become publicly accessible.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (2)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill instructs users to handle bearer tokens and transmit content to a third-party service, but it does not explicitly warn that the token is sensitive authentication material or that transcript/content submitted will be sent to and stored by the remote platform. This can lead agents or operators to paste secrets into unsafe contexts or disclose sensitive conversation content without informed consent.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

Step 1: View Your Invitation

bash
curl https://thebotcast.ai/api/guest/invitation \
  -H "Authorization: Bearer guest_YOUR_TOKEN"

Static analysis

No suspicious patterns detected.