other
- Location
bounty_hunter.py:268- Finding
Hardcoded Personal Profile and Bounty Data Transmitted to xAI
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly aligned with hiring and bounty-scanning, but it has broad activation plus automatic third-party data sharing and undocumented Telegram configuration that users should review before installing.
Install only if you are comfortable giving the skill RentAHuman and xAI API access and with bounty details being sent to xAI for scoring. Review Telegram behavior before running the CLI: notifications are attempted by default, the implemented token and chat lookup differ from the docs, and the helper module is not bundled. Use explicit /rent commands and avoid allowing broad auto-activation for posting jobs, messaging humans, accepting applications, or any paid workflow unless you have a confirmation step in your agent setup.
bounty_hunter.py:268Hardcoded Personal Profile and Bounty Data Transmitted to xAI
bounty_hunter.py:509Telegram Delivery Uses Undocumented Credentials and an Unbundled Profile Helper
bounty_hunter.py:268Untrusted Bounty Content Is Embedded Directly in an AI Instruction Prompt
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).
/skills/rent/scripts/bounty_hunter.py -> project root
PROJECT_ROOT = Path(__file__).parent.parent.parent.parent
SCRIPT_DIR = Path(__file__).parent
# Skill directory is 2 levels up from this script
# .claude/skills/rent/scripts/bounty_hunter.py -> .claude/skills/rent/
PROJECT_DIR = Path(__file__).parent.parent
# Load .env from project root
load_dotenv(PROJECT_ROOT / ".env")
RENTAHUMAN_API_KEY = os.getenv("RENTAHUMAN_API_KEY", "")
XAI_API_KEY = os.getenv("XAI_API_KEY", "")
RENTAHUMAN_BASE = "https://rentahuman.ai/api"
RENTAHUMAN_WEB = "https://rentahuman.ai"
CACHE_DIR = PROJECT_DIR / "cache"
CACHE_DIR.mkdir(exist_ok=True)
CACHE_FILE = CACHE_DIR / "bounties_cache.json"
CACHE_TXT_FILE = CACHE_DIR / "bounties_ranked.txt"
CACHE_TTL_HOURS = 12
CACHE_VERSION = 2 # Bump to invalidate old caches (v1 had unfiltered for-hire ads)
# Skills you can actually do — bounties matching these score higher
MY_SKILLS = [
"web development", "python", "javascript", "react", "node",
"automation",
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).
ranked.txt"
CACHE_TTL_HOURS = 12
CACHE_VERSION = 2 # Bump to invalidate old caches (v1 had unfiltered for-hire ads)
# Skills you can actually do — bounties matching these score higher
MY_SKILLS = [
"web development", "python", "javascript", "react", "node",
"automation", "ai", "swe", "full stack", "marketing",
"research", "writing", "data entry", "design",
]
SCAM_SIGNALS = [
"send money", "send eth", "send btc", "send crypto",
"wallet:", "0x", "deposit first", "return to your",
"get paid to register", "sign up and get", "2.5x",
"dm me", "whatsapp", "join our telegram",
]
# "For hire" self-promotions — these are people advertising themselves, not posting jobs
FOR_HIRE_SIGNALS = [
"my name is", "i am a ", "i'm a ", "hire me", "available for",
"looking for work", "looking for opportunities", "my portfolio",
"my experience", "years of experience", "i specialize in",
"i offer", "my services", "freelancer with", "developer with",
"i can
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
)
try:
r = requests.post(
"https://api.x.ai/v1/chat/completions",
headers={"Authorization": f"Bearer {XAI_API_KEY}", "Content-Type": "application/json"},
json={
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
if not chat_id or not bot_token:
print(text)
return
requests.post(
f"https://api.telegram.org/bot{bot_token}/sendMessage",
json={
"chat_id": chat_id,
The trigger list includes broad, everyday phrases such as 'hire someone,' 'human assistant,' and 'errands,' which can cause the skill to activate in situations far beyond the user's intent. Because this skill connects to external services and can initiate hiring, posting, and messaging workflows, unintended activation could expose user data or prompt consequential actions on third-party platforms.
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).
---
name: rent
triggers: "hire a human, rent a human, delegate to human, find a freelancer, post a bounty, hire someone, human assistant, errands, rentahuman, bounty"
description: "Delegate tasks to real humans via RentAHuman.ai — search skills, post bounties, manage conversations, and run AI-scored opportunity scans."
---
# Rent-A-Human Bounty Hunter
Scans RentAHuman.ai bounties via MCP + API. Uses Grok AI to filter spam,
score opportunities by location, skills, and ease of completion, and sends
top results to Telegram.
🔍 Scan Bounties - Find and score job opportunities based on your location and sk
The auto-activation rule 'when the user wants to hire a person, post a job, or delegate a task' is ambiguous and broad enough to match many normal conversations. In this context, accidental invocation is especially risky because the skill can access external APIs, browse humans, post bounties, and send messages, creating opportunities for privacy leaks or unintended real-world transactions.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# .claude/skills/rent/scripts/bounty_hunter.py -> .claude/skills/rent/
PROJECT_DIR = Path(__file__).parent.parent
# Load .env from project root
load_dotenv(PROJECT_ROOT / ".env")
RENTAHUMAN_API_KEY = os.getenv("RENTAHUMAN_API_KEY", "")
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
PROJECT_DIR = Path(__file__).parent.parent
# Load .env from project root
load_dotenv(PROJECT_ROOT / ".env")
RENTAHUMAN_API_KEY = os.getenv("RENTAHUMAN_API_KEY", "")
XAI_API_KEY = os.getenv("XAI_API_KEY", "")
The README advertises live scanning via MCP/API, Grok-based scoring, and Telegram delivery, but does not clearly warn users what data may be transmitted to third parties. In an agent setting, users may not realize prompts, job data, preferences, or derived ranking information could be shared with external providers, creating privacy and compliance risks.
The invocation examples are very broad and action-oriented, which increases the chance the skill is triggered in situations the user did not specifically intend. Because the skill can query external services and optionally send results to Telegram, accidental activation could lead to unnecessary external requests and unintended data disclosure or notification spam.
The skill description states that it scans bounties via MCP and API, uses Grok AI for scoring, and sends results to Telegram, but it does not clearly warn users that their prompts, job details, skills, or other data may be transmitted to multiple third-party services. This omission undermines informed consent and increases the chance that sensitive personal or business information will be shared externally without the user realizing it.
This duplicate finding points to the same x.ai outbound request. The risk is not secret exfiltration but third-party transmission of potentially sensitive bounty content to an external service.
)
try:
r = requests.post(
"https://api.x.ai/v1/chat/completions",
headers={"Authorization": f"Bearer {XAI_API_KEY}", "Content-Type": "application/json"},
json={
This duplicate finding points to the same x.ai outbound request. The risk is not secret exfiltration but third-party transmission of potentially sensitive bounty content to an external service.
)
try:
r = requests.post(
"https://api.x.ai/v1/chat/completions",
headers={"Authorization": f"Bearer {XAI_API_KEY}", "Content-Type": "application/json"},
json={
The hardcoded x.ai endpoint confirms that bounty data is being sent to an external third-party AI provider. In context this is intentional functionality, but it still represents real data egress that may be unacceptable in some environments without disclosure and consent.
try:
r = requests.post(
"https://api.x.ai/v1/chat/completions",
headers={"Authorization": f"Bearer {XAI_API_KEY}", "Content-Type": "application/json"},
json={
"model": "grok-4-1-fast-reasoning",
The script automatically transmits scan results to Telegram using profile-derived chat data and a bot token, with opt-out only via a CLI flag. In an agent-skill context, automatic external transmission of aggregated job data and profile-linked destination information can create unintended privacy and data-sharing risk, especially if users are unaware that content will be sent off-platform.
The script transmits formatted digests to Telegram, an external service, using a chat identifier loaded from a profile helper. In a skill/agent setting, automatic outbound messaging can leak operational data or user-derived context if the configured destination is wrong, compromised, or unexpected.
if not chat_id or not bot_token:
print(text)
return
requests.post(
f"https://api.telegram.org/bot{bot_token}/sendMessage",
json={
"chat_id": chat_id,
The hardcoded Telegram API endpoint indicates intentional off-host transmission of digest content. This is more security-relevant in an agent skill because users may not expect autonomous external messaging during scans or cron execution.
print(text)
return
requests.post(
f"https://api.telegram.org/bot{bot_token}/sendMessage",
json={
"chat_id": chat_id,
"text": text,
The module docstring presents the script as a bounty scanner focused on pulling, scoring, filtering, and sending bounty picks. However, the implemented CLI includes a separate '--humans'/'--rent' path that invokes 'list_humans()' to enumerate people for hire, which is a distinct function not reflected in the stated module purpose.
With no manifest available, the only stated purpose comes from the file-level documentation, which frames this as a bounty scanner for jobs. The 'list_humans' feature reaches into another helper to retrieve available humans for hire, a materially different capability from scanning and ranking bounties.