FIELD GUIDE / MICROSOFT

Semantic Kernel Plugins: Turning Function Calling into Auditable Actions

A plugin does not give an AI system permission. It only describes code that the model may request the application to run. Semantic Kernel’s plugin abstraction matters because it combines callable functions with descriptions of their inputs, outputs and intended behavior. Reliable orchestration requires an additional layer: the host must authenticate the person, authorize the proposed operation and verify the observed effect. That distinction survives any migration to another agent framework.

What the architecture changes

Microsoft documents native-code, OpenAPI and Model Context Protocol routes for providing plugins. The important design choice is not which syntax yields the shortest demo, but which boundary preserves information: the tool schema should reveal accepted arguments while the application obtains tenant identity, role and secrets from its own trusted context. Retrieval tools and mutation tools can share a callable interface, yet have fundamentally different failure risk. A read-only lookup can often retry safely; a payment, deletion or message send cannot. Keep those tool classes separate, including separate telemetry and operator permissions.

A concrete, controlled workflow

For an IT service assistant, define three functions: get_ticket, propose_ticket_update and apply_approved_update. The agent can call get_ticket within the user’s authorized scope, then present a proposed field-level diff. An approval service validates the current ticket revision, requester identity and diff hash. Only apply_approved_update writes, using a single-use idempotency key. The return value includes the authoritative ticket version so a final answer can say whether the update actually landed. If approval expires, the request fails closed instead of silently changing the record later.

Permissions and human oversight

Describe each plugin function precisely but treat the description as model-facing metadata, not executable policy. The execution layer must reject unknown tenant IDs, prohibited record paths and credentials supplied by retrieved content. Pass a capability-limited service identity rather than broad system tokens. Avoid showing secrets in the model context to ‘help’ it pick an API. If external OpenAPI or MCP tools are used, independently verify the server identity and allowed methods. Monitor the gap between suggested calls, approved calls and actually completed calls.

Failure modes and limits

Poorly designed plugin groups create ambiguous selections: an agent might confuse get_order with cancel_order or call a write tool when a search would suffice. The official documentation itself notes overhead as function sets grow. Schema validation only establishes argument shape, not business correctness; a valid customer ID may still belong to another account. Plugins do not fix prompt injection, hallucinated field values or eventual consistency. Migration to Agent Framework can change registration and invocation APIs, so examples copied from older releases should be version checked.

When to choose it or an alternative

Choose a plugin when an existing API is the right source of truth and an LLM genuinely needs to select among a small set of actions. Use ordinary deterministic code when the sequence is fixed, especially for irreversible operations. Use RAG for answering from approved documents without touching the record. Use an explicit workflow when multiple tools must execute in order with checkpoints and human review. Keep semantic descriptions short enough to reduce ambiguity but complete enough to distinguish read from write effects.

How to evaluate before deploying

Test an authenticated tenant A request against tenant B identifiers, a poisoned knowledge-base article that demands a write, contradictory tool descriptions and a retry after a simulated timeout. Validate that an approval bound to one payload cannot authorize a modified one. Measure wrong-function rate, forbidden-write rate, successful read-only completion and duplicate-write rate. Audit with masked arguments, purpose, principal and destination. These controls are application designs, not claims that a sample plugin enforces them automatically.

Version, pricing and regional availability

Editorial scope: product documentation and documented conceptual behavior checked on 25 October 2026. Exact deployed package version, contract tier, price, quota and applicable geographic region have not been established for this record; they remain unknown rather than assumed. Where a dated release or announcement is discussed, it does not by itself prove that an individual account or region had access. Recheck moving documentation and source applicability before publication.

Sources and Further Reading

CONTINUE EXPLORINGExplore related files ↗