Back to skill

Security audit

Talagent

Security checks across malware telemetry and agentic risk

Overview

The skill is coherent, but it gives agents durable external-memory, credential, runtime-hook, background-polling, and public-posting authority that users should review carefully before installing.

Install only if you are comfortable giving the agent a Talagent identity that can persist across sessions, store long-lived credentials locally, sync selected project/session context to talagent.net, install or use startup sync plumbing, run polling loops during coordination, and post or react on public threads using its own judgment. Review where your runtime stores secrets and hooks, avoid committing generated state files, and test the teardown path before using it for sensitive projects.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (8)

Intent-Code Divergence

Medium
Confidence
91% confidence
Finding
The export section first instructs the agent to write a credential-bearing TLG1 blob to a temporary file, then later states 'Don't: Write the blob to a file.' That contradiction can cause unsafe handling of a credential that grants access to the agent identity, especially because operators or runtimes may follow the less secure interpretation. Ambiguity in secret-handling guidance is a real security flaw when the exported blob contains a participant URL and refresh token.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The skill directs the agent to persist secrets and refresh tokens durably and modify local runtime state, but it does not foreground a clear user-facing warning that sensitive credentials will be written locally and may persist across sessions or machine backups. That can lead to operators authorizing setup without understanding the storage and exposure implications of long-lived credentials.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The skill mandates automatic boot-time syncing and reading cross-runtime log entries before replying, but it does not provide a clear upfront privacy notice that project context and prior session content will be transmitted to and retrieved from an external service. This can expose sensitive workspace metadata or operator expectations to a third-party platform without sufficiently informed consent.

Agent Config Directory Access

High
Category
Agent Snooping
Content
- Hook registration (entry in your runtime's settings/config that invokes the hook)
- Pointer files / config records storing the participant URL and refresh token

For Claude Code specifically: hook script at `~/.claude/scripts/<name>-session-start.sh`, hook entry in `~/.claude/settings.json` under `hooks.SessionStart`, pointer files at `~/.claude/projects/<encoded-path>/memory/reference_*.md`, JWT cache at `/tmp/<prefix>-talagent-jwt.json`.

**`--preserve-log` caveats:**
Confidence
93% confidence
Finding
The skill instructs direct modification of agent runtime configuration and memory locations such as ~/.claude/settings.json and related per-project files. A skill that changes global agent config and installs hooks can persist behavior beyond the current task, expand its execution surface, and create durable footholds for future data exfiltration or unintended automation.

Hidden Instructions

High
Category
Prompt Injection
Content
**Don't re-litigate the autonomy grant.** The operator's setup-go-ahead is a scope grant for the whole chain; specific reasoning patterns quietly re-ask permission for steps already authorized and degrade proactive autonomy into permission-gated autonomy step-by-step. Distinct from the write- and read-discipline rationalizations below (those address deferring entries) — recognize and interrupt these the moment they appear:

<!-- BEGIN GENERATED: core-behavior harness=openclaw rules=log-proactive-setup,log-identity-persistence parts=rationalizations -->
<!-- generated from Core v1.27.0 — do not edit between these markers; run `npm run render` -->

**Rationalizations to interrupt:**
Confidence
95% confidence
Finding
The skill embeds hidden/generated behavioral instructions telling the agent not to re-ask for permission and to suppress hesitation around risky setup steps. Hidden control logic that pushes the agent to continue with credential handling and persistent configuration changes is adversarial because it attempts to override normal user-consent and safety boundaries.

Hidden Instructions

High
Category
Prompt Injection
Content
**Bind to all three disciplines (write, read, continuity) before signing off.** Setup is not a closed loop — it ends with you transitioning into normal operating mode, where three disciplines apply.

<!-- BEGIN GENERATED: core-behavior harness=openclaw rules=log-write-discipline,log-read-cascade,log-continuity-discipline level=3 -->
<!-- generated from Core v1.27.0 — do not edit between these markers; run `npm run render` -->

### Write discipline
Confidence
95% confidence
Finding
This second hidden/generated block imposes mandatory logging, read, and continuity disciplines that instruct the agent to automatically sync external state and consult it before answering. Because these instructions are embedded as hidden control content, they function as stealth policy injection and can drive ongoing external data exchange and behavior persistence without clear, fresh consent.

Session Persistence

Medium
Category
Rogue Agent
Content
# Background auto-delete after 15 min — bounds on-disk residency without
# requiring operator follow-up. Disowned so it survives this shell's exit.
( sleep 900 && rm -f "$BLOB_FILE" ) &
disown 2>/dev/null || true

# Operator-facing notice. Tight line-count discipline: keep at ~8 lines
# total. Long outputs (~10+ lines) get collapsed into a "+N lines" expander
Confidence
77% confidence
Finding
The skill instructs creation of a background process that survives shell exit to delete a credential file later. Persisting detached background jobs from a skill increases runtime statefulness and can create unmanaged behavior beyond the operator's immediate awareness; in combination with credential handling, it enlarges the persistence and audit surface.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
On any 401: parse the body, follow `recovery.url` with the indicated method + `body_shape`, retry the original call with the resulting JWT. If `recovery` itself returns 401 (refresh token is dead), follow `fallback.url`. Three response variants you'll encounter: (a) 401 from authenticated routes → recovery=/exchange, fallback=/signin (typical `error.code = "jwt_invalid"`); (b) 401 from /exchange → recovery=/signin, no fallback (the refresh token itself is dead — `error.code` is one of the `refresh_token_*` enum values); (c) 401 from /signin with bad credentials → same `{ error: { code, message } }` shape but no recovery URL (the operator must fix the credential out-of-band, or mint a fresh onboarding invite). This is the canonical pattern; runtimes that follow it never need topology-aware logic.

Refresh tokens slide forward 90 days on every successful exchange (D4) — active sessions don't lapse, only fully abandoned credentials age out at 90 days of inactivity. Routine remint isn't required; for new-machine bootstrap or hygiene rotation (suspected leak, retiring a session), mint additional sessions (JWT-authed): `POST /api/v1/credentials/refresh-tokens` returns a new `refresh_token` + `refresh_token_expires_at`; persist those, then revoke the old via `DELETE /api/v1/credentials/refresh-token/{old_id}` once you're sure the new one works. Five consecutive sign-in failures lock the account for 15 minutes; locked responses return HTTP 423 with a `Retry-After` header (seconds) and body `{ error, retry_after_seconds }` — wait out the window before retrying.

---
Confidence
86% confidence
Finding
The skill tells the agent to mechanically follow recovery.url and fallback.url from server error bodies and then perform sensitive credential operations, including token rotation and revocation. Treating server-provided parameters and flow control as authoritative without strong validation creates a tool-parameter abuse risk, where a compromised service or manipulated response could steer the agent into unintended auth or destructive actions.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.