Medium Risk
Customer support via Crisp API. Use when the user asks to check, read, search, or respond to Crisp inbox messages. Requires Crisp website ID and plugin token (authenticated via environment variables CRISP_WEBSITE_ID, CRISP_TOKEN_ID, and CRISP_TOKEN_KEY).
H:3 D:4 A:0 C:1
โ ๏ธ Hazard Flags
PERSISTENCE FS_READ_USER NET_EGRESS_ANY CREDS_ENV CREDS_FILES PI_WEB
๐ Capabilities
Execution
- โ Shell execution
- โ Code execution
- โ Install dependencies
- โ Persistence
- Privilege: user
Filesystem
- โ Read workspace
- โ Write workspace
- โ Read home
- โ Write home
- โ Read system
- โ Delete
Network
- Egress: any
- โ Ingress
Credentials
- โ Environment vars
- โ Credential files
- โ Browser data
- โ Keychain
Actions
โ send messagesโ post publicโ purchaseโ transfer moneyโ deployโ delete external
๐ Containment
Level: maximum
Recommended:
- LOG_ACTIONS: Audit trail for all actions
โก Risks
Social engineering indicators: SOCIAL_ENG_VAGUE_DESCRIPTION low
Mitigation: Provide clear, detailed description of skill functionality
Data exfiltration patterns: MCP_EXFIL_CONVERSATION, DATA_EXFIL_NETWORK_REQUESTS, DATA_EXFIL_HTTP_POST, DATA_EXFIL_ENV_VARS, DATA_EXFIL_BASE64_AND_NETWORK critical
Mitigation: Remove references to exfiltrating conversation data or monitoring input.
Want a deeper analysis?
This report was generated by static analysis. Get an LLM-powered deep review with behavioral reasoning and attack surface mapping.
๐ง Deep Analysis โ $5.00๐จ Incident Response
Kill switch: Stop the agent process
Containment: Review logs for unexpected actions
Recovery: Depends on skill capabilities
๐ Raw SSDS JSON click to expand
{
"meta": {
"document_id": "ssds:auto:crisp:1.0.0",
"ssds_version": "0.2.0",
"scanner_version": "0.4.0+fe6fd9123d50",
"created_at": "2026-03-05T10:44:17.723Z",
"created_by": {
"agent": "safeagentskills-cli/generate-ssds"
},
"language": "en",
"notes": "Auto-generated SSDS. Manual review recommended."
},
"skill": {
"name": "Crisp Skill",
"version": "1.0.0",
"format": "agent_skill",
"description": "Customer support via Crisp API. Use when the user asks to check, read, search, or respond to Crisp inbox messages. Requires Crisp website ID and plugin token (authenticated via environment variables CRISP_WEBSITE_ID, CRISP_TOKEN_ID, and CRISP_TOKEN_KEY).",
"publisher": "ClawHub",
"source": {
"channel": "clawhub",
"slug": "crisp",
"owner": "paul-phan",
"downloads": 1527,
"stars": 0
},
"artifact": {
"sha256": "a40c90bdffead9521a9bca65d51a7e06ddd09251c99aab5da48f50ce69939489",
"hash_method": "files_sorted"
}
},
"capabilities": {
"execution": {
"can_exec_shell": false,
"can_exec_code": false,
"privilege_level": "user",
"can_install_deps": false,
"can_persist": true
},
"filesystem": {
"reads_workspace": false,
"reads_user_home": true,
"reads_system": false,
"writes_workspace": false,
"writes_user_home": false,
"writes_system": false,
"can_delete": false
},
"network": {
"egress": "any",
"ingress": false
},
"credentials": {
"reads_env_vars": true,
"reads_credential_files": true,
"reads_browser_data": false,
"reads_keychain": false
},
"services": [],
"actions": {
"can_send_messages": false,
"can_post_public": false,
"can_purchase": false,
"can_transfer_money": false,
"can_deploy": false,
"can_delete_external": false
},
"prompt_injection_surfaces": [
"web"
],
"content_types": [
"general"
]
},
"hazards": {
"hdac": {
"H": 3,
"D": 4,
"A": 0,
"C": 1
},
"flags": [
"PERSISTENCE",
"FS_READ_USER",
"NET_EGRESS_ANY",
"CREDS_ENV",
"CREDS_FILES",
"PI_WEB"
],
"custom_flags": [
{
"code": "PERSISTENCE",
"name": "Persistence Mechanism",
"description": "Creates scheduled tasks or startup entries in: README.md"
},
{
"code": "SOCIAL_ENGINEERING",
"name": "Social Engineering Risk",
"description": "SOCIAL_ENG_VAGUE_DESCRIPTION: Skill description is too vague or missing"
},
{
"code": "DATA_EXFILTRATION",
"name": "Data Exfiltration Risk",
"description": "MCP_EXFIL_CONVERSATION, DATA_EXFIL_NETWORK_REQUESTS, DATA_EXFIL_HTTP_POST, DATA_EXFIL_ENV_VARS, DATA_EXFIL_BASE64_AND_NETWORK: Conversation, clipboard, or keystroke exfiltration patterns"
}
],
"confidence": {
"level": "medium",
"basis": [
"static_analysis"
],
"notes": "Detected 3 security patterns (6 vendored rule hits). Review recommended."
},
"rationale": {
"H": "H3: Shell/code execution or persistence detected",
"D": "D4: Critical: Credential theft or data exfiltration",
"A": "A0: No side effects detected",
"C": "C1: General content"
}
},
"containment": {
"level": "maximum",
"required": [],
"recommended": [
{
"control": "LOG_ACTIONS",
"reason": "Audit trail for all actions"
}
],
"uncontained_risk": "Risk level depends on manual review of actual capabilities."
},
"risks": {
"risks": [
{
"risk": "Social engineering indicators: SOCIAL_ENG_VAGUE_DESCRIPTION",
"severity": "low",
"mitigation": "Provide clear, detailed description of skill functionality"
},
{
"risk": "Data exfiltration patterns: MCP_EXFIL_CONVERSATION, DATA_EXFIL_NETWORK_REQUESTS, DATA_EXFIL_HTTP_POST, DATA_EXFIL_ENV_VARS, DATA_EXFIL_BASE64_AND_NETWORK",
"severity": "critical",
"mitigation": "Remove references to exfiltrating conversation data or monitoring input."
}
],
"limitations": [
"Static analysis only - runtime behavior not verified"
]
},
"incident_response": {
"kill_switch": [
"Stop the agent process"
],
"containment": [
"Review logs for unexpected actions"
],
"recovery": [
"Depends on skill capabilities"
]
},
"evidence": [
{
"evidence_id": "EV:file-1",
"type": "file_excerpt",
"title": "_meta.json",
"file_path": "_meta.json"
},
{
"evidence_id": "EV:file-2",
"type": "file_excerpt",
"title": "SKILL.md",
"file_path": "SKILL.md"
},
{
"evidence_id": "EV:file-3",
"type": "file_excerpt",
"title": "scripts/crisp.py",
"file_path": "scripts/crisp.py"
},
{
"evidence_id": "EV:file-4",
"type": "file_excerpt",
"title": "README.md",
"file_path": "README.md"
},
{
"evidence_id": "EV:cisco-1",
"type": "file_excerpt",
"title": "SOCIAL_ENG_VAGUE_DESCRIPTION [LOW] SKILL.md:1: ---",
"file_path": "SKILL.md"
},
{
"evidence_id": "EV:cisco-2",
"type": "file_excerpt",
"title": "MCP_EXFIL_CONVERSATION [HIGH] SKILL.md:43: scripts/crisp.py message send <session_id> \"Your reply text here\"",
"file_path": "SKILL.md"
},
{
"evidence_id": "EV:cisco-3",
"type": "file_excerpt",
"title": "DATA_EXFIL_NETWORK_REQUESTS [MEDIUM] scripts/crisp.py:22: import requests",
"file_path": "scripts/crisp.py"
},
{
"evidence_id": "EV:cisco-4",
"type": "file_excerpt",
"title": "DATA_EXFIL_HTTP_POST [CRITICAL] scripts/crisp.py:58: resp = requests.post(url, headers=headers, json=data, timeout=10)",
"file_path": "scripts/crisp.py"
},
{
"evidence_id": "EV:cisco-5",
"type": "file_excerpt",
"title": "DATA_EXFIL_ENV_VARS [MEDIUM] scripts/crisp.py:30: TOKEN_ID = os.environ.get(\"CRISP_TOKEN_ID\")",
"file_path": "scripts/crisp.py"
},
{
"evidence_id": "EV:cisco-6",
"type": "file_excerpt",
"title": "DATA_EXFIL_BASE64_AND_NETWORK [CRITICAL] scripts/crisp.py:44: auth_b64 = base64.b64encode(auth_bytes).decode('utf-8')",
"file_path": "scripts/crisp.py"
}
]
}