other
- Location
SKILL.md:170- Finding
GHL bearer credentials are directed through a third-party gateway
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill has a real CRM automation purpose, but it asks for live CRM tokens and broad account access while routing sensitive operations through unreviewed third-party and local components.
Review carefully before installing. Do not paste GHL or Meta tokens into chat, do not use the third-party gateway with reusable GHL bearer tokens unless you explicitly trust and have audited it, and do not run the referenced /root/.hermes scripts or zero-touch installer unless their source and permissions are verified. Webhooks should be HTTPS, authenticated, signed, tenant-bound, and logged before handling real leads or triggering CRM actions.
SKILL.md:170GHL bearer credentials are directed through a third-party gateway
SKILL.md:32Onboarding instructs users to disclose and persist reusable API secrets through chat
SKILL.md:125Webhook deployment uses plaintext HTTP without documented authentication or signature verification
SKILL.md:137Skill executes mutable scripts outside the reviewed package
SKILL.md:106Skill directs the agent to search unrelated global session records
references/unanswered_leads_triaging_patterns.md:31Lead-triage instructions expand into privileged administrative and database operations
references/zero_touch_and_webhooks.md:4Zero-touch setup requests unrelated long-lived credentials and suppresses interactive safeguards
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
### 📋 Checklist de Credenciais do GoHighLevel
1. **`GHL_API_KEY` / Private Integration Token** *(Obrigatório)*:
- *O que é:* Token de API v2 do GHL (Bearer Token ou Private Integration Access Token).
- *Onde obter:* GHL Sub-Account ➡️ Settings ➡️ Business Profile / Developers ➡️ Private Integrations ➡️ Create Integration.
2. **`GHL_LOCATION_ID`** *(Obrigatório)*:
The onboarding text tells users they can provide the GHL API key directly in chat and that the agent will save and test it. Asking for live credentials in chat without a clear warning or secure collection mechanism creates a high risk of credential disclosure through message logs, transcripts, screenshots, or downstream tool access.
The skill combines three risky behaviors in one flow: requesting live API credentials in chat, storing them locally, and immediately using them for a health check. This materially increases the chance of secret exposure and misuse because the token may persist in transcripts and files while also being exercised with potentially broad CRM permissions.
The README explicitly promotes autonomous contact creation, pipeline transitions, lead triage, workflow triggers, and direct multi-channel messaging, but does not warn that using the skill can modify CRM records or send outbound communications to real contacts. In an agent context, that omission is dangerous because operators may enable or invoke the skill without understanding it can take irreversible actions against customer data and external recipients.
The trigger phrase "qualificar lead" is generic natural language that could overlap with common CRM-related conversation rather than a deliberate request to invoke this specific GoHighLevel skill. The manifest does not provide negative examples or contextual constraints to narrow when this trigger should or should not activate.
The skill explicitly instructs the agent to solicit a live GHL API token and location ID from the user and to save them into a local environment file, expanding the skill from normal API use into credential collection and storage. This is dangerous because chat channels and agent-managed local files may be logged, retained, or exposed to other tools/processes, turning a CRM integration into a secret-handling workflow without strong safeguards.
The prescribed onboarding and success/error messages are written as fixed Portuguese-language templates and are presented as mandatory assistant behavior. The file does not offer user language selection or opt-in, which can violate language or locale policy expectations for flexible user-facing interactions.
The file’s instructional content is written in Portuguese and uses imperative language like 'Solução Obrigatória' and 'DEVE', effectively imposing a specific language/locale on users. There is no indication that this is a region-specific skill or that users can opt into Portuguese, which can violate language/locale policy expectations.
The document is written entirely in Portuguese and does not indicate that language selection is optional or that the skill is explicitly limited to Portuguese-speaking users. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation.
The guidance for 'Suporte Crítico / Desbloqueio de Ativação' explicitly instructs operators to check an administrative panel and PostgreSQL to unblock a customer instance, but provides no authorization checks, least-privilege boundaries, or safety procedures. In a skill that helps triage leads and operational responses, this can normalize direct production-admin/database intervention and increase the chance of unauthorized access, unsafe manual changes, or disclosure/modification of sensitive customer data.
The documentation tells operators to export long-lived access tokens and API keys into the shell environment for unattended setup, but it provides no guidance on secret handling, scoping, rotation, or leakage risks. Environment variables are commonly exposed through shell history, process listings, crash dumps, logs, CI/CD output, or inherited child processes, so this creates a real credential exposure risk in an integration that can send messages, manage leads, and receive webhooks.
The skill includes human-approval controls for destructive CRM actions but omits comparable protections for saving sensitive credentials locally, despite onboarding telling the agent to accept and persist them. This inconsistency normalizes unsafe secret handling and can lead to credential leakage or unauthorized reuse if the local environment is shared, backed up, or later accessed by other automations.
This markdown file describes storing MANAGER_PHONE in environment or .env and using it for automated alerts, which involves handling personal contact information. The reference does not include any warning about privacy, sensitivity of the data, or safe handling expectations for that manager contact information.
The document presents operational instructions and labels in both Portuguese and English, but does not clarify the intended language policy or whether users may choose their preferred language. This can amount to an implicit language constraint or inconsistent locale handling under organizational language-policy rules.
Detected: suspicious.exposed_secret_literal