Back to skill

Security audit

Buildertrend

Security checks for vulnerabilities and agentic risk

Overview

This skill is mostly legitimate Buildertrend automation, but it includes under-scoped live business actions such as client approval, accounting pushes, recurring report delivery, cloud folders, reminders, and agent config changes.

Review before installing. Use this only with a dedicated test Buildertrend project first, remove or disable client approval-on-behalf and e-signature steps unless your organization has a documented authorization policy, and require explicit per-action approval before any financial, report-delivery, cloud-storage, reminder, local-file, or multi-agent configuration change.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
playbooks/convert-lead-to-job.md:342
Finding
Undeclared Cross-Workspace Writes and Persistent Data Propagation## Vulnerability Details **File Location**: `playbooks/convert-lead-to-job.md`, lines 342–411 **Vulnerability Type**: Least-privilege violation through cross-workspace configuration changes and external data propagation **Risk Level**: Medium ### Vulnerable Code Snippet ```markdown ## Step 6: Trigger Company Project Registry Checklist **Action:** Run {{company_name}}'s internal project setup workflow from `project-registry.json` **⚠️ This is company-specific, not Buildertrend. This runs AFTER BT job creation.** **Message to the user:** ``` 🏗️ BT job is live! Now running company project setup: ☐ Google Drive — create project folder + subfolders ☐ Apple Reminders — create company project list ☐ Update project-registry.json ☐ Update agent TOOLS.md — Active Projects table ☐ Update agent MEMORY.md — Active Projects ☐ Update receipt agent config — receipt routing ☐ Update receipt agent known-projects.json ☐ Update bookkeeper agent QBO config ☐ Update procurement agent known-projects.json ☐ Notify all agents of new project Proceed with full setup? ``` ### Registry Setup Execution Follow **every step** in `SKILLS/project-registry.json` → `update_checklist`: 1. **Google Drive** — create folder under `Projects/` with standard subfolders: - Invoices - Expenses / Receipts - Pending Review / Receipts - Matched - Estimating - Procurement - Orders - Other Documents 2. **project-registry.json** — add new project entry with: - Title, code, BT job ID, Drive folder ID, contract type, PMs, dates 3. **agent TOOLS.md** — add to Active Projects table 4. **agent MEMORY.md** — add to Active Projects section 5. **receipt agent rcpt/config.json** — add receipt routing for project code 6. **receipt agent rcpt/known-projects.json** — add project matching patterns 7. **bookkeeper agent quickBooks transactions/config.json** — add QBO mapping 8. **procurement agent purchasing-manager/known-projects.json** — add procurement matching 9. **{{bookkeeper_workspac ...[truncated 4201 chars]
Remediation
## Remediation Suggestions 1. **Separate the cross-system workflow** - Move Google Drive, Reminders, filesystem, and multi-agent configuration operations into a separate skill. - Declare every required capability explicitly in that skill’s manifest. 2. **Remove unaudited instruction dependencies** - Bundle and review `project-registry.json` with the skill. - Pin the checklist to a validated schema or cryptographic digest. - Reject unknown operations and destinations rather than executing every listed step. 3. **Enforce destination allowlists** - Resolve and canonicalize every path before writing. - Restrict writes to explicitly approved workspace roots. - Reject path traversal, symbolic-link escapes, absolute paths outside approved roots, and unresolved placeholders. 4. **Use granular authorization** - Request separate confirmation for local memory changes, each agent workspace, Google Drive, Apple Reminders, and cross-agent notifications. - Display exact destination paths, records, recipients, and fields before execution. - Do not treat one “Run Full Setup” action as authorization for all systems. 5. **Minimize propagated data** - Share only fields required by each destination. - Avoid storing customer contact details, financial mappings, or folder identifiers in general-purpose long-term memory unless necessary. - Apply documented retention and deletion policies. 6. **Protect configuration integrity** - Validate modifications against strict schemas. - Use atomic writes and retain backups. - Show a diff before committing changes. - Provide transaction-style rollback if any step fails. 7. **Align documentation and metadata** - Update `skill.json` and the security documentation to disclose all optional capabilities and external destinations. - Remove the claim that operation is browser-only when optional workflows write to files, cloud storage, reminders, and other agents.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (145)

Intent-Code Divergence

High
Confidence
97% confidence
Finding
The playbook explicitly labels the workflow as 'read-only audit,' but later includes actions to fix records, re-push bills/invoices, and alter sync settings. This mismatch can cause an agent or user to authorize the skill under a low-risk assumption and then perform financial system modifications that affect accounting records and downstream reconciliations.

Missing User Warnings

High
Confidence
97% confidence
Finding
The skill explicitly permits internal approval on behalf of a client and applying an e-signature, but provides no guardrail requiring documented authorization or warning about legal, audit, and non-repudiation consequences. In an agent-assisted workflow, this can normalize impersonation or unauthorized acceptance of contractual terms, creating fraud, dispute, and compliance risk.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The playbook’s stated purpose is Buildertrend lead-to-job conversion, but Step 6 expands into unrelated company-internal systems and local agent workspace files, including config updates and cross-agent notifications. This creates a dangerous scope jump: a user asking to create a Buildertrend job could unintentionally trigger broad side effects across Drive, reminders, bookkeeping, procurement, and agent configuration state.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The skill instructs the agent to modify internal config files, TOOLS.md/MEMORY.md files, and notify other agents, which goes beyond normal Buildertrend automation and can alter downstream agent behavior. If invoked accidentally or with malformed project data, this could corrupt internal state, poison agent memory/configuration, or propagate incorrect project metadata into multiple dependent systems.

Ssd 4

High
Confidence
99% confidence
Finding
This workflow normalizes internal approval on behalf of clients as a standard operational option, framing impersonated consent as part of routine processing. In context, change orders alter contract price and scope, so encouraging staff or an agent to stand in for client approval creates serious authorization, fraud, and enforceability risks.

Missing User Warnings

High
Confidence
98% confidence
Finding
The playbook explicitly supports approving a change order on behalf of a client and applying an e-signature, which can bypass the client's actual consent. In a financial construction-management workflow, this can authorize scope, pricing, and contractual obligations without valid approval, creating fraud, repudiation, and legal exposure.

Ssd 4

High
Confidence
97% confidence
Finding
The pending-approval follow-up flow presents 'Approve Internally' alongside reminders and cancellation, making unauthorized approval a recommended fallback when clients do not respond. That is especially dangerous here because stale approvals often occur under time pressure, increasing the chance of unauthorized commitments being made for work, billing, and procurement.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The playbook’s stated purpose is Buildertrend job setup, but the overview immediately expands scope into Google Drive, Apple Reminders, project-registry.json, and multiple agent configuration updates. This creates a scope-drift vulnerability: a user invoking a seemingly narrow Buildertrend workflow could unintentionally trigger broad cross-system changes and local file modifications outside the expected automation boundary.

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
The parallel tasks section authorizes edits across multiple agent workspaces, JSON config files, and documentation files unrelated to browser automation in Buildertrend. Because these updates affect routing, bookkeeping mappings, procurement behavior, and other agents’ state, a single invocation could propagate unintended or attacker-influenced data across the organization’s operational tooling.

Missing User Warnings

High
Confidence
98% confidence
Finding
The 'Running parallel setup...' section initiates cross-system updates and file modifications without an explicit confirmation checkpoint immediately before execution. In an agentic environment, this is dangerous because it enables broad side effects—file edits, config changes, and external resource creation—to occur automatically once the workflow reaches that stage, even if the user only intended Buildertrend setup.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The playbook instructs modification of local registry/config artifacts (`SKILLS/project-registry.json`, agent config files, reminders lists) that are unrelated to ordinary Buildertrend job closeout. This is dangerous because it can alter the host automation environment, disable or misconfigure other agents, and create persistent state changes outside the user-visible Buildertrend workflow.

Missing User Warnings

High
Confidence
98% confidence
Finding
The skill allows scheduling recurring report email delivery without requiring explicit warnings or confirmation about ongoing external distribution of sensitive financial information. This is more dangerous than a one-time export because it can create persistent, repeated leakage to incorrect recipients or unsecured mailboxes long after the original request.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill overview explains how automation works but does not prominently warn that it can change live Buildertrend data through browser control. Because this skill covers invoicing, purchase orders, change orders, user/role management, payments, and other production workflows, the absence of an upfront warning makes accidental use against live data much more likely.

Vague Triggers

Medium
Confidence
89% confidence
Finding
The playbook triggers are intentionally broad and overlap with ordinary user requests like 'Create proposal,' 'Run a report,' or 'Add user,' which can cause the agent to invoke high-impact workflows without sufficiently explicit confirmation of scope or target. In this skill's context, those workflows can modify real Buildertrend records, financials, schedules, permissions, and client-facing data through browser automation, so ambiguous activation materially increases the chance of unintended actions.

Session Persistence

Medium
Category
Rogue Agent
Content
2. **Identify** → Which project? (inline buttons)
3. **Gather** → Collect details (guided prompts or freeform)
4. **Suggest** → Smart defaults (cost codes, vendors, amounts, tags)
5. **Review** → Present summary with Create / Edit / Cancel buttons
6. **Execute** → Browser Relay actions in Buildertrend (snapshot → act → verify)
7. **Post-action** → Log it, update Reminders, notify other agents, check QBO sync
Confidence
60% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Vague Triggers

Medium
Confidence
94% confidence
Finding
Several playbook triggers are framed broadly, such as acting when information is 'provided' or 'reported,' without requiring clear user confirmation, project scoping, or validation of authority. In a browser automation context tied to a live authenticated Buildertrend session, ambiguous triggers can cause unintended writes such as creating change orders, RFIs, purchase orders, or schedule updates in the wrong project or at the wrong time.

Description-Behavior Mismatch

Medium
Confidence
93% confidence
Finding
The strategy explicitly expands automation beyond Buildertrend into other agents and external storage, creating cross-system data flows for budgets, invoices, contacts, schedules, change orders, and daily logs. Without explicit scoping, consent, minimization, and destination-specific controls, this increases the risk of unauthorized disclosure, over-collection, and propagation of sensitive project and financial data across systems.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The strategy directs the agent to extract Buildertrend data and forward it to other agents and Google Drive without any explicit user-facing notice, consent workflow, retention policy, or access-control discussion. Because the referenced data includes financials, project schedules, contacts, and daily logs, silent onward transfer materially raises confidentiality, compliance, and data-governance risks.

Behavior Manipulation

Medium
Category
Prompt Injection
Content
## 1. Job IDs & Direct Navigation

BT uses numeric job IDs in URLs. Always use direct URL navigation instead of trying to click the sidebar job picker.

### Known Job IDs
| Job | ID | Direct URL |
Confidence
70% confidence
Finding
Subtle instructions detected that may alter agent decision-making or introduce hidden biases.

Missing User Warnings

Medium
Confidence
85% confidence
Finding
This guidance explicitly describes actions that can create, send, approve, decline, add to invoices/POs, and delete records in a production business system, but it does not consistently require explicit user confirmation before externally visible or potentially irreversible actions. In an automation skill, that omission is dangerous because an agent could operationalize these steps and trigger real business, financial, or vendor-facing changes without a strong safety checkpoint.

Missing User Warnings

Medium
Confidence
80% confidence
Finding
The lead creation section instructs handling contact information such as name, email, phone, and address without any privacy, consent, minimization, or retention guidance. That creates a real risk that an agent could collect, enter, or propagate personal data in CRM workflows without appropriate user awareness or policy constraints.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
- **Selection Instructions** — Visible to clients
- **Internal Notes** — Only visible to internal users
- **Attachments** — Photos, scans, files
- **Client: Allow to Add/Edit Choices** — Client can suggest/explore options (not auto-approved)
- **Vendors** — Involved subs/vendors
- **Installers** — Assigned for installation (see approved choices only, no pricing)
Confidence
85% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The knowledge base includes a literal template placeholder in the taxes section: `{{tax_jurisdiction}} {{tax_rate}}%`. In a skill meant to guide real Buildertrend financial setup, leaving an unresolved placeholder can cause operators or downstream agents to apply incorrect tax settings, leading to billing errors, tax miscalculation, and compliance issues.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The README openly states that playbooks proceed to Browser Relay execution and covers many workflows that create, update, approve, invoice, message, and configure data in Buildertrend, but it does not clearly warn that these are state-changing operations with business impact. In a catalog of 43 playbooks, the lack of prominent safety warnings and operation classification can cause users or agents to underestimate the consequences of running a workflow.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The trigger phrases in the Sales & Pre-Construction section include broad language such as general business events and natural-language requests, which can cause accidental invocation of workflows that create or modify Buildertrend records. In this skill, those triggers are especially risky because downstream actions ultimately execute in Browser Relay against a live external system, so ambiguous activation can lead to unintended sales, estimating, or bidding operations.

Static analysis

No suspicious patterns detected.