# ETAS: An Effect-Typed Language for Agent Systems

arXiv: https://arxiv.org/abs/2607.17780 · HTML: https://mlsanity.com/paper/2607.17780/

## Key facts

- No citing papers in the map yet (data through 14 Oct 2026).
- Builds on 9 of its 30 references that are in the map.
- First posted on arXiv 20 Jul 2026.

## Builds on (most cited first, 9 of 9)

- [Is Grep All You Need? How Agent Harnesses Reshape Agentic Search](https://mlsanity.com/paper/2605.15184/) (2026)
- [Allo: A Programming Model for Composable Accelerator Design](https://mlsanity.com/paper/2404.04815/) (2024)
- [Context Engineering for AI Agents in Open-Source Software](https://mlsanity.com/paper/2510.21413/) (2025)
- [Agentic Hardware Design as Repository-Level Code Evolution](https://mlsanity.com/paper/2606.28279/) (2026)
- [Handling Algebraic Effects](https://mlsanity.com/paper/1312.1399/) (2013)
- [Do be do be do](https://mlsanity.com/paper/1611.09259/) (2016)
- [Koka: Programming with Row Polymorphic Effect Types](https://mlsanity.com/paper/1406.2061/) (2014)
- [Efficient, Portable, Census-Polymorphic Choreographic Programming](https://mlsanity.com/paper/2412.02107/) (2024)
- [Answer Refinement Modification: Refinement Type System for Algebraic Effects and Handlers](https://mlsanity.com/paper/2307.15463/) (2023)

## Abstract (arXiv)

ETAS is a programming language for agent systems that treats model-backed agents, tool calls, prompts, typed memory, human approvals, policies, and execution traces as semantic program elements rather than library conventions. It separates deterministic computation from agentic nondeterminism and externally visible actions while preserving a direct programming style. We present the core design of ETAS. Its static semantics assigns ordinary types through spec conformance and tracks each computation with two behavioral indices: an escaping effect row and a persistent abstraction of the typed action trace it may request. Specs form a terminating compile-time constraint calculus: type specs provide evidence for polymorphism and resource facts, callable specs constrain function and stage shapes, and trace specs express allow, deny, and temporal constraints. Typing checks requested traces against compiled monitors and emits residual obligations when dynamic resources preclude a complete static proof. The dynamic semantics distinguish requested, handled, denied, and committed events; handlers interpret typed actions without making their requests invisible to authorization or audit. We formalize a core calculus and state preservation, progress, type/effect soundness, handler trace-transparency, and policy safety. We also implement ETAS in Rust with a command-line interface, typed HIR checks, effect and policy diagnostics, handler checks, and trace-aware execution hooks. ETAS provides a programming-language foundation for reasoning about authorization, nondeterminism, recovery, and audit evidence before and during agent execution.
