Back to skill

Security audit

Truncus Email

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent email-sending integration, but users should treat it as an external delivery tool that may expose email contents to Truncus and local logs.

Install only if you are comfortable sending email contents, recipient data, metadata, and any attachments to Truncus. Use a scoped API key, avoid sending secrets or regulated data unless approved, explicitly disable open and click tracking when it is not needed, and be careful with local dev mode because it may print email payload details into transcripts or logs.

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:327
Finding
Local Development Mode Exposes Sensitive Email Data in Agent Output## Vulnerability Details **File Location**: `SKILL.md`, lines 327–333 **Vulnerability Type**: Sensitive data exposure through logging **Risk Level**: Medium **Vulnerable Code Snippet**: ```markdown ## Local Dev Mode If `TRUNCUS_API_KEY` is not set in the environment, do not attempt to call the API. Instead: 1. Print the full request payload that would be sent (to, from, subject, body preview). 2. Log: `[truncus-email] Simulated send — set TRUNCUS_API_KEY to send for real.` 3. Return a simulated success with `message_id: "local-simulated"`. ``` ### Technical Analysis When `TRUNCUS_API_KEY` is unavailable, the Skill instructs the Agent to print the email request payload. This includes recipient and sender addresses, the subject, and a body preview. Transactional emails may contain personal information, operational incident details, financial reports, password-reset content, or account information. Agent output can be retained in conversation histories, terminal output, CI/CD logs, debugging systems, or centralized observability platforms. Consequently, an absent or misconfigured API key changes the workflow from transmitting the message to the intended email service into disclosing its contents through local output channels. The issue is particularly relevant because the documented use cases include reports, receipts, password resets, monitoring alerts, and messages containing account details. The exposure does not require compromise of the Truncus API or possession of its API key. ### Attack Path 1. A user or automated workflow asks the Agent to construct an email containing sensitive information. 2. `TRUNCUS_API_KEY` is absent, expired from the environment, or unavailable because of deployment misconfiguration. 3. The Skill automatically enters local development mode. 4. Following the Skill instructions, the Agent prints the recipient, sender, subject, and body preview. 5. The output is retained in an Agent transcript, terminal log, CI log, or monit ...[truncated 711 chars]
Remediation
## Remediation Suggestions 1. Do not print email bodies or full payloads by default in local development mode. 2. Return only a simulation status and non-sensitive request metadata, such as whether required fields were present. 3. Redact recipient and sender addresses, for example `a***@example.com`. 4. Omit or heavily truncate subjects and body previews because they may contain credentials, tokens, personal data, or operational details. 5. Require an explicit debug option, such as `TRUNCUS_DEBUG_PAYLOAD=true`, before displaying any payload preview. 6. Display a confidentiality warning and request user confirmation before enabling verbose payload output. 7. Apply automated redaction for API keys, authorization headers, passwords, reset links, access tokens, session identifiers, and common personal-data fields. 8. Ensure production and CI environments disable verbose simulation output and configure log retention and access controls appropriately. 9. Clearly label the operation as simulated without returning a response shape that downstream workflows could mistake for an actual delivery. A safer default would be: ```markdown If `TRUNCUS_API_KEY` is not set: 1. Do not print the body, attachments, metadata, or complete email addresses. 2. Log only: `[truncus-email] Simulated send; no email was delivered.` 3. Return `status: "simulated"` and `message_id: "local-simulated"`. 4. Reveal a redacted payload preview only after explicit user confirmation. ```
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 (10)

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The README promotes sending email content, recipient addresses, attachments, and related metadata to the Truncus external API, but it does not clearly warn users that potentially sensitive data will leave the local environment and be processed by a third party. In an agent skill context, this omission is meaningful because users may invoke the skill on operational alerts, reports, account details, or incident summaries that can contain confidential or regulated information.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill enables open and click tracking by default but does not instruct the agent to disclose the privacy implications or obtain user confirmation before using those features. This can cause recipient behavioral data to be collected and transmitted without clear consent, which is especially risky in alerting and notification workflows where users may assume plain transactional delivery.

External Transmission

Medium
Category
Data Exfiltration
Content
### Request Example

```bash
curl -X POST https://truncus.co/api/v1/emails/send \
  -H "Authorization: Bearer $TRUNCUS_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
Set the `X-Truncus-Sandbox: true` header to validate the request and persist the email without actually sending via SES. Useful for testing integrations. Sandbox emails receive a `sandbox-` prefixed provider message ID.

```bash
curl -X POST https://truncus.co/api/v1/emails/send \
  -H "Authorization: Bearer $TRUNCUS_API_KEY" \
  -H "Idempotency-Key: test-$(uuidgen)" \
  -H "X-Truncus-Sandbox: true" \
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill performs an outbound network call to a third-party email API and transmits operational alert content plus metadata, but it provides no user-facing disclosure that data will leave the environment or that an API credential will be used. This creates a real security and privacy risk because users may unknowingly send potentially sensitive incident details to an external service.

External Transmission

Medium
Category
Data Exfiltration
Content
## Agent Action

```bash
curl -X POST https://truncus.co/api/v1/emails/send \
  -H "Authorization: Bearer $TRUNCUS_API_KEY" \
  -H "Idempotency-Key: alert-payments-error-rate-2026-03-11T1430Z" \
  -H "Content-Type: application/json" \
Confidence
91% confidence
Finding
The curl command sends email content, recipient details, and alert metadata to https://truncus.co/api/v1/emails/send using a bearer token. In this context the external transmission is intended functionality, but it is still a genuine vulnerability pattern because the skill can exfiltrate internal operational information to a third-party service without any guardrails, minimization, or explicit consent flow.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill performs an outbound API call to a third-party email service using an API key, but the skill description and example do not clearly warn that user-supplied content and recipient data will be transmitted externally. This is a real security/privacy issue because an agent could send sensitive workflow data off-platform or trigger unintended email delivery without explicit user awareness or consent.

External Transmission

Medium
Category
Data Exfiltration
Content
## Agent Action

```bash
curl -X POST https://truncus.co/api/v1/emails/send \
  -H "Authorization: Bearer $TRUNCUS_API_KEY" \
  -H "Idempotency-Key: deploy-complete-2026-03-11-001" \
  -H "Content-Type: application/json" \
Confidence
90% confidence
Finding
This command sends data to an external service over HTTPS and authenticates with a bearer token, which creates a real exfiltration and action-triggering boundary. In the context of an email-sending skill, this is expected behavior, but it remains security-relevant because any included message content, recipient address, and metadata leave the local environment and could expose sensitive information or be abused for unauthorized notifications.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill instructs an agent to transmit business sales data to an external email service without any explicit user warning, consent checkpoint, or data-classification guardrail. Even though the example is a legitimate reporting workflow, sending potentially sensitive commercial data off-platform can create privacy, confidentiality, and compliance risks if recipients, content, or destination are not validated.

External Transmission

Medium
Category
Data Exfiltration
Content
The agent constructs the HTML body from the data, then sends:

```bash
curl -X POST https://truncus.co/api/v1/emails/send \
  -H "Authorization: Bearer $TRUNCUS_API_KEY" \
  -H "Idempotency-Key: weekly-sales-2026-w11" \
  -H "Content-Type: application/json" \
Confidence
91% confidence
Finding
This skill performs deliberate external transmission of generated report content to a third-party API, which is expected for an email skill but still security-relevant. The danger comes from the agent being able to exfiltrate sensitive report contents if upstream prompts, recipient addresses, or report data are manipulated or insufficiently constrained.

Static analysis

No suspicious patterns detected.