[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
ERP Agent Workflows That Need Access Control
The risk becomes clearer when you look at the kinds of ERP workflows teams want to give agents.
Inventory lookup: An operations agent may need to check stock levels, availability, reorder status, and warehouse location. It does not need permission to export every inventory record or update item master data.
Order status: A customer service or sales assistant may need to summarize order status, shipment status, delays, or backorders. It does not need permission to modify pricing, change credit terms, or approve exceptions.
Supplier and purchasing workflows: A procurement agent may need to check supplier status, purchase order status, delivery dates, and open issues. It should not automatically approve a purchase order, change vendor banking details, or override sourcing rules.
Work orders and maintenance: A plant or operations chatbot may need to look up work orders, maintenance history, or equipment status. Updating a work order, closing it, or changing production data should require stronger policy or approval.
Finance and invoice workflows: An agent may help review invoices, match purchase orders, or summarize exceptions. Posting invoices, changing payment instructions, or approving payments should be treated as high-risk actions.
These are exactly the workflows where broad ERP API access feels convenient during a rollout but becomes risky in production.
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
ERP API Least-Privilege Policy Examples
Least privilege for ERP agents should be specific enough to separate safe assistance from risky execution.
Inventory assistant: allow read-only inventory lookup by plant, warehouse, product, or user group. Deny item master updates, bulk exports, and cross-region access unless explicitly approved.
Order status assistant: allow order lookup, shipment lookup, and customer-specific summaries. Require approval for price changes, order cancellation, credit holds, or changes to delivery commitments.
Procurement agent: allow supplier status lookup, purchase order search, and exception summaries. Require approval for new purchase orders, supplier changes, payment changes, and high-value approvals.
Maintenance agent: allow work-order lookup, equipment history, and recommended next steps. Require approval before closing work orders, changing production schedules, or updating regulated records.
Finance agent: allow invoice search, exception summaries, and reconciliation assistance. Require approval for invoice posting, payment release, banking changes, write-offs, or bulk financial exports.
The important point is that the policy should not only say which ERP API an agent can call. It should say which business action is allowed for which user, agent, object, and context.
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
The same access problem appears whether the agent is built internally or purchased from a vendor.
Custom agents give teams flexibility, but developers may connect them to ERP through a broad service account because it is the fastest way to make the first workflow work. That shortcut can leave the agent with more access than the use case requires.
Third-party agents and packaged AI tools create a different concern. The vendor may provide useful automation, but your team still needs to control which ERP APIs, records, and actions the agent can reach inside your environment.
AI workflow platforms sit somewhere in between. They make it easy to chain steps across ERP, CRM, ticketing, data platforms, and messaging systems, but each extra step expands the blast radius if permissions are too broad.
A gateway-based policy layer lets security, IT, and operations teams enforce one access model across custom agents, third-party agents, chatbots, MCP clients, and workflow automation.
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop
[@portabletext/react] Unknown block type "undefined", specify a component for it in the `components.types` prop