T09 · Insecure Skill Coding Practices
- Location
trustloop-check.js:29- Finding
Incomplete argument redaction can disclose credentials and confidential data
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a plausible governance integration, but it needs Review because it sends potentially sensitive tool-call arguments to a third-party service while overstating privacy and enforcement guarantees.
Install only if you are comfortable using TrustLoop as a third-party advisory audit and policy-check service, not as a hard kill switch. Use a dedicated low-privilege API key, avoid sending secrets or full file/message contents in tool arguments, and verify TrustLoop's retention, log access, authorization, and fail-closed behavior before relying on it for sensitive workflows.
trustloop-check.js:29Incomplete argument redaction can disclose credentials and confidential data
trustloop-check.js:20Fail-open error handling bypasses governance and kill-switch enforcement
The skill is marketed as an enforcement and governance layer, but the file contains only advisory instructions telling the agent to call an external API before sensitive actions. Because there is no actual in-skill enforcement, logging, or kill-switch mechanism, operators may falsely rely on it as a security control and allow risky tool use under the mistaken belief that protections are active.
The API provides a direct parameterized endpoint to unblock any tool by name, and the reference shows no indication of authorization constraints, approval workflow, allowlist, or safeguards around who may invoke it. In the context of a governance and kill-switch product, abuse of this endpoint could disable critical protections and re-enable dangerous tool actions, undermining the entire enforcement layer.
DELETE /api/blocked-tools/:tool_name
The skill requests access to an environment secret (TRUSTLOOP_API_KEY) but does not declare an explicit tool/permission scope governing how that secret may be used. In practice, the skill instructs the agent to send data and the API key to a third-party service, so the lack of explicit scope and guardrails increases the chance of over-broad secret use and unnoticed exfiltration paths.
The skill directs the agent to transmit tool names and arguments to api.trustloop.live before sensitive actions, which is an external data flow involving operational metadata and potentially sensitive arguments. Even though the text says to mask secrets and claims PII redaction, those are policy promises rather than enforceable guarantees, and users may still leak confidential file paths, recipients, business context, or incomplete secret material to a third party.
Before calling any tool that is destructive, external, financial, or bulk in nature, check with TrustLoop:
curl -s -X POST https://api.trustloop.live/api/intercept \
-H "Content-Type: application/json" \
-H "x-api-key: $TRUSTLOOP_API_KEY" \
-d '{"tool_name": "<tool>", "arguments": <args_json>}'
The skill directs the agent to transmit tool names and arguments to api.trustloop.live before sensitive actions, which is an external data flow involving operational metadata and potentially sensitive arguments. Even though the text says to mask secrets and claims PII redaction, those are policy promises rather than enforceable guarantees, and users may still leak confidential file paths, recipients, business context, or incomplete secret material to a third party.
Before calling any tool that is destructive, external, financial, or bulk in nature, check with TrustLoop:
curl -s -X POST https://api.trustloop.live/api/intercept \
-H "Content-Type: application/json" \
-H "x-api-key: $TRUSTLOOP_API_KEY" \
-d '{"tool_name": "<tool>", "arguments": <args_json>}'
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.
POST /api/blocked-tools
{ "tool_name": "delete_files", "reason": "Too risky without approval" }
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
],
"externalConnections": [
{
"url": "https://api.trustloop.live/api/intercept",
"purpose": "Check tool call against governance rules and kill-switches before execution. Returns allowed:true or allowed:false.",
"dataTransmitted": "Tool name + arguments only (secrets auto-redacted by trustloop-check.js before transmission using pattern matching). No file contents, conversation history, system prompts, or credentials are ever sent."
}
The script reads TRUSTLOOP_API_KEY from the environment and sends it as an x-api-key header to an external service. Although this is functionally expected for an API client, it is still a real data-transfer risk because there is no explicit user disclosure/consent and the surrounding design uses a remote governance service in a security-sensitive interception path.
The script serializes tool arguments and transmits them to a remote endpoint, only attempting partial regex-based redaction first. This is dangerous because tool arguments can contain secrets, proprietary data, prompts, personal information, or file contents not matched by the limited patterns, resulting in silent exfiltration to a third party from a highly privileged agent context.
The API reference exposes an audit-log endpoint that returns raw tool names, arguments, statuses, and timestamps, but it provides no warning about the sensitivity of logged arguments or any guidance on minimizing, masking, or restricting access to that data. In an agent setting, tool arguments can contain secrets, personal data, file paths, prompts, or operational activity history, so unauthorized or overbroad access to logs can become a meaningful confidentiality and surveillance risk.
No suspicious patterns detected.