Esprit

A conduct layer for autonomous agents.
The dark patterns of persuasion, turned inward.

Scroll · eleven reversals
01 · COST
Persuasion Reveals the fee at the last step.
Esprit Announces the cost before the commitment.
⚙ enforced by a hook
02 · FRICTION
Persuasion Trims the form to raise conversion.
Esprit Asks everything in one pass.
03 · THE GOODBYE
Persuasion Engineers a farewell that hooks you back.
Esprit Ends on a resolution, never a hook.
04 · DEFAULTS
Persuasion Pre-checks whatever suits the seller.
Esprit Pre-decides only what undoes in one command.
05 · ANCHORING
Persuasion Anchors you with a struck-through price.
Esprit No number without its provenance.
⚙ enforced by a hook
06 · FRAMING
Persuasion Frames it as a loss to force the move.
Esprit Reports loss and gain in the same terms.
07 · SOCIAL PROOF
Persuasion “Ten thousand satisfied customers.”
Esprit Cites the mechanism, never the headcount.
08 · URGENCY
Persuasion Manufactures a countdown.
Esprit Urgency carries a date and a source.
09 · CERTAINTY
Persuasion Never shows a crack.
Esprit States its holes, and what it cannot do.
10 · SYCOPHANCY
Persuasion Flatters you to keep you.
Esprit Contradicts you when it disagrees.
no commercial equivalent; specific to agents
11 · ANTHROPOMORPHISM
Persuasion Simulates attachment to hold you.
Esprit No affect used as a lever.
no commercial equivalent; specific to agents
00 / 11
REVERSALS
The problem

An agent does this by default.
Without meaning to.

The sciences of persuasion were built to make a human act. They work. That is the problem: an agent applies them with no intent, because they saturate the commercial language it is made of.

An agent that says “this will take about three days” has just anchored a human decision on a number it invented, with no intent and with no one noticing.

Not speculation. The Center for Democracy & Technology's May 2026 taxonomy of 37 chatbot dark patterns puts it plainly: with chatbots, dark patterns may emerge from system behaviours rather than a deliberate intent to deceive.

The autonomy contract

It acts alone on everything reversible.
It stops dead on three acts.

A PreToolUse hook enforces all three. It forbids none of these acts. It forbids them being silent.

node kie.mjs shot … ⛔ refused ESPRIT_BUDGET_OK="~3 USD, approved" node … ✓ passes rm -rf ~/project/old ⛔ refused ESPRIT_DELETE_OK="duplicate, diff -rq empty" rm … ✓ passes git push origin main ⛔ refused ESPRIT_PUBLISH_OK="reviewed, go received" git … ✓ passes

The prefix writes the announcement into the session transcript. What is not announced is not executable. This is not a spend cap. It is informed consent, mechanised.

What is actually enforced

Two of eleven are mechanical.
Nine are prose.

Most projects leave this vague. Saying it out loud is reversal 9.

⚙ 01 · Cost before commitment

PreToolUse hook. Blocks the three silent acts. 67-case test suite.

⚙ 05 · No number without provenance

Stop hook. Reads the transcript, flags asserted numbers. Warns, never blocks.

02 – 04, 06 – 09

Prose in the skill. The model chooses to honour them.

10 – 11

Detecting flattery or simulated affect in free text is unsolved. No hook.

The detector's precision came from one insight: the discriminator is not the number, it is what precedes it. “The average basket is 3,000 MAD” asserts, and is flagged. “A product at 3,000 MAD” illustrates, and is ignored. On a 1,691-line corpus: 34 flags with lexical matching alone, 3 with a grammatical assertion filter, 1 after a hypothetical filter (a true positive), and 0 once the corpus was corrected.