Integration Action Safety
Extend external effects without weakening idempotency, approval, execution fencing, or reconciliation.
Read-only Mode
An MCP tool is read-only only when its annotation explicitly says so. A CLI operation is read-only only when trusted provider logic can classify it before execution. Missing or ambiguous evidence fails closed.
Consequential Input Shape
Full-access MCP tools receive an explicit wrapper containing provider input and action metadata. Trusted CLI effects require a stable idempotency key and plain-language summary.
Task-only Effects
Chat cannot execute consequential integration operations. Task runs can propose them because the task, run, authorization epoch, version, and blockers provide the durable execution context.
Private MCP Attachments
When a hosted MCP tool requires private file bytes, persist immutable file metadata in the action and keep bytes in invocation-owned object storage. Verify ownership, size, content type, and SHA-256 before proposal and execution. Build the provider payload only in backend memory, fence it with the live tool-schema hash, and never persist base64 content, local paths, credentials, or upload URLs.
Delete staged files after success, rejection, known pre-dispatch failure, or human reconciliation. Retain them while approval or uncertain external outcome is pending, and backstop abandoned objects with a storage lifecycle policy.
Action Lifecycle
proposed
→ waiting approval or approved
→ fenced execution
→ succeeded / failed / unknown
→ receipt or reconciliationThe provider call is attempted at most once. A transport failure after dispatch becomes unknown.
Do not generate a new idempotency key and retry.
Add a New Effect Classifier
- Start from provider schema or dry-run output.
- Define explicit read/effect cases.
- Reject auth/configuration and unbounded operations.
- Treat unrecognized future commands as consequential or unsupported.
- Map risk and policy inputs without provider-specific shortcuts.
- Preserve the original task version and authorization epoch.
- Store a redacted typed receipt.
- Test approval, rejection, execution, timeout, unknown outcome, reconciliation, and stale recovery.
Tests That Must Fail Closed
- Missing read-only annotation.
- Chat attempting a write.
- Disabled integration.
- Ungranted profile.
- Changed task version.
- Changed authorization epoch.
- Expired execution lease.
- Reused invocation with different input.
- Unknown provider method.
- Credential material in input, logs, or receipts.