> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.cessy.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.cessy.ai/_mcp/server.

# Expression Language

> Use Cessy expressions for guards, mappings, policies, projections, and runtime configuration without unsafe dynamic code.

Cessy expressions are evaluated through the platform expression pipeline. They are for declarative conditions and mappings, not arbitrary code execution.

## Use expressions for

* webhook guards
* policy guards
* field mappings
* projection mapping rules
* permission conditions
* adapter request shaping where supported

## Keep expressions readable

Prefer small expressions with clear input names. If an expression becomes hard to review, move the workflow into explicit model artifacts or controlled custom code.

## Safety

Do not use `eval()` or dynamically generated JavaScript. Expression evaluation should stay inside the supported Cessy expression pipeline.

## Testing

Test expressions with realistic payloads:

* missing optional fields
* unexpected enum values
* denied permission paths
* duplicate webhook events
* empty projection input

Expression failures should be visible in validation, Activity, or error logs.