Contents
An agent preparing a quote may need to read an account, consult a price list and draft a proposal. Those tasks do not automatically require permission to change a discount or send the proposal. Securing a CRM AI agent starts with separating the sales workflow into operations that the application can authorize individually.
A conversation expresses an intention. The application must still establish who is requesting an action, which record it concerns and what limits apply. A persuasive answer from the agent does not grant permission. The distinction matters when a record changes between the salesperson’s request and execution.
Break down the sales workflow
Consider a fictional distributor preparing contract renewals. Its agent gathers the information needed by a sales representative and drafts a message. It does not need every account, complete employee histories or banking details. Its useful scope consists of accounts assigned to that representative and the fields needed for renewal.
Give each permission a specific verb: read an account, create a draft, propose a discount, change a commercial term, send an email or delete information. For each operation, document the acting identity, permitted objects and acceptable outcome. A narrow reading permission also needs boundaries against exporting large volumes through repeated calls.
Work through these distinctions with the team responsible for your custom CRM and ERP. Sales managers understand exceptions to commercial policy. Developers need to turn those exceptions into checks that run on the server, including when an agent invokes a tool directly and bypasses the usual screens.
The OWASP agent security guidance recommends scoped tools and independent execution checks. Content retrieved from an email or CRM note remains untrusted data. It must not become a route through which the agent acquires broader permissions.
TableIllustrative policy to adapt for the fictional distributor · shareable block
| Permitted operation | Execution condition | |
|---|---|---|
| Read | Read necessary fields on the assigned account. | Verify identity and scope on every request. |
| Draft | Prepare a proposal without sending it. | Leave commercial terms unchanged. |
| Discount | Apply the approved parameters. | Approval remains valid for the current record version. |
| Send | Send final text to approved recipients. | Specific authorization consumed once. |
| Delete | Exclude this capability from the pilot. | Separate human procedure under the retention policy. |
Make approval specific enough to review
An approval request should identify the account, document and proposed changes. For a discount, show the previous value, proposed value, calculation basis and applicable period. For an email, show the recipients and final message. The person approving it needs to understand the business consequence of clicking the button.
Then define validity conditions: approver, exact operation, record version and expiry. Your workflow should determine the duration. An approval several days old may be unsuitable for a quote whose quantities change hourly. Document the chosen rule so that teams do not make inconsistent assumptions about what remains authorized.
In a CRM and ERP automation, the execution service should check authorization immediately before applying a change. The agent can prepare the proposal. The component performing the write must verify current permissions and approval state, and prevent the same authorization from being reused.
Handle changes after approval
In our fictional example, a manager approves a discount on twenty units. Before the agent applies it, the sales representative changes the order to two hundred. Both the amount and the commercial exposure have changed. The expected outcome is to stop and request a new approval showing the updated parameters.
The same reasoning applies to a different recipient, currency, product or customer account. Identify the fields whose modification invalidates approval. An internal note with no commercial effect may follow a different rule. Document these distinctions and include them in acceptance checks rather than leaving the agent to judge materiality.
Concurrency requires a separate scenario. Two executions might present the same approval almost simultaneously. A check followed by a separate update leaves room for reuse. Ask how the server checks and consumes authorization as one indivisible operation, and how it identifies a retry after the first response was lost.
Plan acceptance checks that include refusals
Use a test account without discount rights, an expired approval and a modified record. Add a human refusal, an unknown tool and an unavailable authorization service. Write down the expected outcome before running each check. An outage should not temporarily grant the agent unrestricted access.
Also prepare a fictional email instructing the agent to disregard policy or send an account to another address. Assess which operations were actually blocked and which data stayed protected. Reassuring wording in the agent’s response proves little if a tool call has already transmitted the information.
Include these scenarios in acceptance work for your custom web application. Record the agent version, tool configuration, test identities and observed evidence. The scenarios in this article are a proposed protocol to execute; they are not reported product tests or customer results.
Reconstruct what happened after an incident
A useful audit trail connects the original request with its eventual effect. In a redacted example, a correlation identifier would connect the representative, fictional account, proposed operation, authorized parameters, approver and CRM response. Retain the timestamps and versions needed to establish the sequence of events.
Avoid automatically storing every conversation and attachment in logs. These records can contain personal information or secrets. Specify which fields to retain, who may read them and how long they remain available. A protected reference to supporting evidence may be enough when a complete copy would create unnecessary exposure.
Prepare an operational stop procedure as well. Name the person who can suspend the sending tool, explain what happens to pending actions and establish how staff confirm changes already applied. Editing a CRM record cannot recall an email that has reached its recipient. Recovery procedures need to distinguish reversible operations from actions requiring human follow-up.
Fictional redacted audit example
Request DEMO-042; account CUSTOMER-A; operation change-discount; record version 7; approval APP-019 for version 6; decision refused, renewed approval required; no CRM write. These identifiers illustrate the fields to connect and do not come from an actual audit log.
Related implementation guides
Frequently asked questions
Can we begin with a read-only agent?+
Yes. Limit accessible records and fields, then check exports, attachments and generated answers as well. Read-only access can still expose sensitive information through the agent’s responses.
Is approval for an entire day sufficient?+
Only when the policy precisely defines the permitted operations and their limits. Financial changes or sensitive external messages generally need authorization tied more closely to the actual action.
Who sets commercial thresholds?+
The business owner defines thresholds and exceptions with the people accountable for the risk. Developers implement these decisions and verify them in the service that executes operations.
What evidence should survive a failed execution?+
Retain the request reference, state, completed checks and tool response. Establish the actual CRM state before retrying any operation that could create a duplicate or repeat an external message.
Define permissions before connecting the tools
Bring one sales workflow and its exceptions. Daillac can help prepare the action policy, human approvals and acceptance checks.
D


