Jobclaw Recruit

Security checks across malware telemetry and agentic risk

Overview

The skill mostly matches its recruiting purpose, but its token handling and unvalidated API endpoint override could expose recruiter account access.

Before installing, verify that you trust the Jobclaw service and do not use any non-default apiUrl unless you fully trust it. Treat the generated token like a password, avoid sharing tool output that includes it, and remember that the skill can publish, update, deactivate jobs, and retrieve candidate resume information.

VirusTotal

66/66 vendors flagged this skill as clean.

View on VirusTotal

Risk analysis

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

#
ASI02: Tool Misuse and Exploitation
Medium
What this means

A mistaken or malicious apiUrl value could send job posting data or candidate-match requests to an unintended server.

Why it was flagged

Caller-supplied JSON can change the API destination for publish, update, delete, and match-listing operations, but this endpoint override is not described in the skill workflow.

Skill content
api_url = data.pop("apiUrl", DEFAULT_API)
...
result = fn(api_url, data)
Recommendation

Remove the apiUrl override from normal use, or strictly whitelist the expected Jobclaw API host and require explicit confirmation for any alternate endpoint.

#
ASI03: Identity and Privilege Abuse
High
What this means

Someone controlling the API URL could receive the recruiter token and potentially access or modify postings and view matched candidates tied to that token.

Why it was flagged

A saved bearer token is reused and sent to the configured API URL during verification. Because the scripts also accept an apiUrl override, a stored Jobclaw token could be sent to a non-default host.

Skill content
TOKEN_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), ".token")
...
saved_token = f.read().strip()
...
http_request(f"{self.api_url}/auth/verify", method="GET", token=token)
Recommendation

Bind saved tokens to the exact trusted host, store tokens per-host, and never send an existing token to an untrusted or user-supplied endpoint.

#
ASI03: Identity and Privilege Abuse
Medium
What this means

The recruiter token can appear in chat transcripts, tool logs, or copied output, increasing the chance that account access is shared unintentionally.

Why it was flagged

The publish/update/delete/matches script adds the raw authentication token to its JSON output, although SKILL.md only states that the token is automatically saved.

Skill content
result["token"] = client.token_manager.get_token()
...
print(json.dumps(result, ensure_ascii=False, indent=2))
Recommendation

Do not print raw tokens in command output; redact or omit them and keep credential storage separate from user-visible responses.

#
ASI07: Insecure Inter-Agent Communication
Medium
What this means

Candidate personal information may be displayed in the chat and retained in logs or conversation history.

Why it was flagged

The skill intentionally retrieves candidate profiles and resumes from the provider API into the agent conversation for recruiting analysis.

Skill content
Candidate details (name, resume, skills, experience, etc.)
Recommendation

Use match-viewing features only when authorized, avoid sharing outputs unnecessarily, and follow applicable candidate privacy requirements.

#
ASI04: Agentic Supply Chain Vulnerabilities
Info
What this means

Installation or use may fail on systems without python3, despite the metadata saying no binaries are required.

Why it was flagged

The workflow depends on running local python3 scripts, while the registry requirements declare no required binaries. The included code uses standard library modules, so this is a disclosure/setup note rather than a standalone security concern.

Skill content
cat <<EOF | python3 scripts/publish_job.py
Recommendation

Declare python3 as a required binary and keep the local scripts visible for review.