{"data":{"skill":{"slug":"pexoai-pexoai-agent","name":"pexoai-agent","icon":"📦","repo":"https://github.com/pexoai/pexo-skills/tree/main/skills/pexo-agent/","status":"approved","author":"pexoai","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"d1768311-7886-44e2-a980-ccbf73446f2a","skill_id":"e5465916-49d3-4bb4-92c4-48e0ba585be3","version":43,"content_hash":"e4abf994042e0a2df3d76b1f721a283b","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":null,"manual_install_policy":null,"summary":"Skill executes bash scripts to interact with Pexo AI video API. Static scanner detected external commands and env access patterns typical of API client scripts. Evaluation confirms these patterns are legitimate API client operations: scripts execute hardcoded commands with validated inputs, access config file for API credentials, and make network requests to Pexo API endpoints. Hidden file access (e.g., ~/.pexo/config) is standard practice for config management. No user input injection vectors found. High count of findings is due to documentation files (SETUP-CHECKLIST.md, TROUBLESHOOTING.md) containing shell examples, not executable code.","remediation":[],"risk_factor_evidence":[{"factor":"scripts","evidence":[{"file":"scripts/_common.sh","line_end":431,"line_start":1},{"file":"scripts/pexo-chat.sh","line_end":155,"line_start":1},{"file":"scripts/pexo-project-get.sh","line_end":178,"line_start":1}]},{"factor":"network","evidence":[{"file":"scripts/_common.sh","line_end":300,"line_start":250},{"file":"SKILL.md","line_end":10,"line_start":9}]},{"factor":"filesystem","evidence":[{"file":"scripts/_common.sh","line_end":40,"line_start":36},{"file":"scripts/pexo-upload.sh","line_end":80,"line_start":50}]},{"factor":"env_access","evidence":[{"file":"scripts/_common.sh","line_end":34,"line_start":17},{"file":"SKILL.md","line_end":14,"line_start":13}]},{"factor":"external_commands","evidence":[{"file":"scripts/pexo-chat.sh","line_end":80,"line_start":48},{"file":"scripts/pexo-upload.sh","line_end":90,"line_start":50}]}],"critical_findings":[],"high_findings":[{"title":"Weak Cryptographic Algorithm Usage (MD5)","locations":[{"file":"SKILL.md","line_end":90,"line_start":90},{"file":"SKILL.md","line_end":261,"line_start":261},{"file":"scripts/pexo-project-get.sh","line_end":137,"line_start":137},{"file":"scripts/pexo-project-get.sh","line_end":144,"line_start":144}],"confidence":0.55,"description":"MD5 hash functions used in shell scripts for temporary file naming. MD5 is cryptographically weak but used here for non-security purposes (temp file generation), not authentication or integrity verification.","confidence_reasoning":"MD5 usage found but only for temp file naming, not security-critical operations. Low risk in this context."}],"medium_findings":[{"title":"Shell Command Execution in Scripts","locations":[{"file":"scripts/_common.sh","line_end":225,"line_start":223},{"file":"scripts/pexo-chat.sh","line_end":48,"line_start":48},{"file":"scripts/pexo-upload.sh","line_end":55,"line_start":52}],"confidence":0.75,"description":"Scripts use bash command substitution $(...) for API interactions, file operations, and system diagnostics. Commands are hardcoded with no user input injection vectors.","confidence_reasoning":"Command substitution patterns are standard for API client scripts. All commands use validated inputs, no user-controlled command concatenation."},{"title":"Hidden Configuration File Access","locations":[{"file":"scripts/_common.sh","line_end":3,"line_start":3},{"file":"scripts/pexo-asset-get.sh","line_end":13,"line_start":13}],"confidence":0.85,"description":"Scripts read configuration from ~/.pexo/config. Standard practice for API client credentials storage, not malicious file access.","confidence_reasoning":"Config file access is standard for API client scripts. File path is hardcoded, not user-controlled."},{"title":"Environment Variable Access for Credentials","locations":[{"file":"scripts/_common.sh","line_end":22,"line_start":21},{"file":"scripts/pexo-doctor.sh","line_end":82,"line_start":82},{"file":"SKILL.md","line_end":13,"line_start":13}],"confidence":0.88,"description":"Scripts read PEXO_API_KEY and PEXO_BASE_URL from environment or config file. Standard credential management pattern for API clients.","confidence_reasoning":"Credential access is legitimate API client pattern. No exfiltration detected - credentials only sent to Pexo API endpoints."},{"title":"Network Requests to Hardcoded URLs","locations":[{"file":"scripts/_common.sh","line_end":279,"line_start":279},{"file":"scripts/pexo-doctor.sh","line_end":81,"line_start":81},{"file":"SKILL.md","line_end":10,"line_start":9}],"confidence":0.92,"description":"Scripts make HTTP requests to https://pexo.ai and related endpoints. Hardcoded URLs are expected for API clients.","confidence_reasoning":"Network requests go to legitimate Pexo API. No suspicious external endpoints detected."}],"low_findings":[{"title":"System Reconnaissance Patterns in Documentation","locations":[{"file":"references/SETUP-CHECKLIST.md","line_end":35,"line_start":35},{"file":"references/TROUBLESHOOTING.md","line_end":7,"line_start":7}],"confidence":0.78,"description":"Documentation files contain shell commands checking system state (curl, jq availability). These are troubleshooting instructions for users, not malicious reconnaissance.","confidence_reasoning":"Commands are in documentation (TROUBLESHOOTING.md), not executable code. Standard diagnostic patterns for setup guides."},{"title":"Standard Device File Access","locations":[{"file":"scripts/_common.sh","line_end":44,"line_start":44},{"file":"scripts/pexo-doctor.sh","line_end":32,"line_start":32}],"confidence":0.95,"description":"Scripts access /dev/null and standard streams. Normal shell scripting practice.","confidence_reasoning":"Standard file descriptors (/dev/null, stdin/stdout/stderr) are normal shell operations."}],"dangerous_patterns":[],"files_scanned":13,"total_lines":2110,"audit_model":"claude","audited_at":"2026-05-05T08:55:24.156+00:00","created_at":"2026-05-05T13:38:58.864935+00:00","static_findings":[],"finding_verdicts":[],"semantic_findings":[],"subject_marketplace_commit_sha":null,"subject_content_hash":null,"subject_tree_hash":null,"subject_plugin_path":null,"audit_payload_hash":null,"confirmed_risk_level":null,"scanner_version":null,"policy_version":null,"subject":{"marketplaceCommitSha":null,"contentHash":null,"treeHash":null,"pluginPath":null,"auditPayloadHash":null},"scannerVersion":null,"policyVersion":null},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"not_attestable","url":null,"status":null,"reason":"canonical install advisories are incomplete"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":6,"needsReviewCount":0,"falsePositiveCount":1,"agentAutoInstallPolicy":null,"manualInstallPolicy":null,"artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}