Skip to content
Skip to main content

Policies, Rules, and Lists

Agent Accounts ship with three admin-scoped resources that control how mail is handled on the account level:

  • Policies bundle limits, spam settings, and linked rules. One policy can apply to many Agent Accounts.
  • Rules match inbound messages by sender and run actions (block, mark_as_spam, assign_to_folder, and more).
  • Lists are typed collections of domains, TLDs, or addresses that rules reference through the in_list operator.

All three are application-scoped. You create them once and reference them by ID on the grants you provision — they have no grant ID in the path; your API key identifies the application.

You can inspect existing policies and rules from the Nylas CLI with nylas agent policy list and nylas agent rule list. Creation and updates currently go through the API.

Policies, Rules, and Lists are optional. An Agent Account works out of the box with sensible plan defaults for send rate, storage, retention, and spam detection — you only need these resources when you want to customize that behavior or filter inbound messages. Reach for them when you need to:

  • Customize limits per agent or customer. Different send quotas, storage caps, or retention windows for different Agent Accounts — for example, stricter limits on prototype accounts, higher quotas on a production sales agent.
  • Tune spam handling. Enable DNSBL checks and header anomaly detection, or turn the sensitivity dial up or down for a particular class of agent.
  • Reject known-bad senders at SMTP. A block rule rejects the message before it’s ever delivered to the mailbox, so your application never sees it.
  • Route inbound mail automatically. Move newsletters to a folder, auto-star mail from key customers, archive or trash noise without writing any application code.
  • Maintain dynamic allow/block lists. A List fronted by a Rule lets non-engineers update who’s allowed or blocked without touching rule definitions or redeploying anything.

If none of these apply, skip this page — your Agent Accounts will use plan defaults and deliver every inbound message to the inbox.

The three resources form a chain. Lists hold values. Rules reference lists (via the in_list operator) and describe conditions and actions. Policies bundle limits and a set of linked rule IDs. An Agent Account gets a policy_id on its grant, which pulls in every rule and limit at once.

ResourceWhat it ownsHow it’s referenced
ListA typed collection of domains, TLDs, or email addressesBy ID, from a rule condition’s value (when operator is in_list)
RuleMatch conditions on from.address, from.domain, or from.tld and actions (block, mark_as_spam, assign_to_folder, and more)By ID, in a policy’s rules array
PolicyLimits, spam detection settings, options, and the rule IDs it appliesBy ID, in a grant’s settings.policy_id
Agent AccountThe grant itselfsettings.policy_id on POST /v3/connect/custom

When a message arrives for an Agent Account, Nylas looks up the grant’s policy_id, evaluates each linked rule in priority order (lowest number first), and applies the first matching action. Limits on the policy govern what the account can send and store.

A policy is the configuration you reuse across many Agent Accounts. It contains:

  • Limits — attachment size and count, allowed MIME types, total message size, per-account storage, daily send quotas, and inbox/spam retention.
  • Spam detection — DNSBL checking, header anomaly detection, and a spam_sensitivity dial (0.1–5.0; higher is more aggressive).
  • Options — additional folders to auto-create, CIDR-based email aliasing.
  • Rules — the array of Rule IDs that apply to grants using this policy.

Every limit is optional. If you omit one, it defaults to your plan’s maximum. If you request a value above the plan maximum, the API returns an error.

Pass policy_id in settings when you create the grant.

You can change the policy on an existing grant by updating its settings.policy_id. If policy_id is unset, the grant inherits the policy_id configured on the application’s nylas connector, if any.

For the complete policy schema, see the Policies API reference.

A rule decides what to do with an inbound message. It has:

  • Match conditions against from.address, from.domain, or from.tld using the operators is, is_not, contains, or in_list.
  • An operator (all or any) for combining multiple conditions with AND or OR.
  • Actions that run when the match hits: block, mark_as_spam, assign_to_folder, mark_as_read, mark_as_starred, archive, or trash.

Rules run in priority order (lower numbers first; range 0–1000, default 10). The block action is terminal — it rejects the message at the SMTP level and can’t be combined with other actions.

Combine multiple conditions with operator: "any" (OR) and pair actions — an assign_to_folder action with a mark_as_read action.

For the full rule schema, see the Rules API reference.

A list is a typed collection of values that rules match against via the in_list operator. Use lists when a rule’s allow/block values change over time — update the list and every rule that references it picks up the new values immediately.

Each list has a fixed type, set at creation and immutable:

TypeValues it holdsRule field it matches
domainDomain names (example.com)from.domain
tldTop-level domains (com, xyz)from.tld
addressFull email addresses ([email protected])from.address

Values are lowercased and trimmed on write, and validated against the list’s type. For example, a domain list rejects full email addresses. Duplicate additions are silently ignored.

Add up to 1000 items per request.

Use "operator": "in_list" and pass one or more List IDs as value.

Deleting a list cascades to its items, and rules that reference the list through in_list stop matching its values after deletion. For the full list schema, see the Lists API reference.

Every time the rule engine evaluates an inbound message (or SMTP envelope) for an Agent Account, Nylas records an audit entry. Use GET /v3/grants/{grant_id}/rule-evaluations to list those entries, most recent first — it’s the fastest way to answer “why did this message get blocked / routed / marked?” for a specific grant.

Each record includes the evaluation stage (smtp_rcpt if the message was rejected before acceptance, inbox_processing if it was evaluated post-acceptance), the sender data that was considered (from_address, from_domain, from_tld), the IDs of any matched rules, and the actions that were applied (blocked, marked_as_spam, archived, folder_ids, and so on). Cross-reference matched_rule_ids with the Rules API to see the conditions each matching rule was built from.

  • Order rules carefully. Lower priority runs first, and the first matching block action is terminal. Put specific rules (is, in_list against a small list) before broad ones (contains).
  • Prefer lists over inline values when the set is likely to grow. One list can feed many rules and be updated without touching rule definitions.
  • Start with spam_sensitivity: 1.0 and tune from there. Go up if spam is slipping through; go down if legitimate mail is getting marked.
  • Set both retention values. limit_spam_retention_period must be shorter than limit_inbox_retention_period, so spam clears out ahead of the inbox.
  • Use separate policies per agent archetype. A sales-outreach agent and a support-triage agent have different send limits and spam tolerances — model them as separate policies rather than one catch-all.