Skip to main content
Prefix each inbound message with its arrival time so the agent can answer “remind me in 2 hours” or “what did I say this morning?”.

Quick Start

1

Enable timestamps in your gateway config

Add one line under session: to stamp every inbound turn:
Run with:
The model now sees each turn with its real arrival time:
2

Customise the template

The template must contain a YYYY-MM-DD HH:MM date-time — the replay de-dup regex anchors on it. The %a weekday and %Z timezone are optional, so non-English server locales are safe.

How It Works

The session manager strips any stale prefix and re-stamps each turn with its real arrival time before the agent sees it.

Configuration Options

Set these under session: in your channel config.
Keep timestamps off unless the agent needs relative-time reasoning. Every stamped turn is billed again on replay, and the changing prefix breaks prompt caching.

Common Patterns

Relative-time reminders — the model reads the prefix to resolve “in 2 hours” against a real clock:
Group chats — pair with per_chat scope; the timestamp sits outermost so sender attribution stays intact:
The agent sees: [Fri 2026-07-09 10:15 UTC] [alice] when's the launch? Minimal prefix — drop the weekday and timezone to save tokens:

Best Practices

Leave timestamps off for bots that never reason about time. The prefix changes on every turn, so it disrupts prompt caching and adds tokens to each replayed message. Turn it on for scheduling, reminders, or gap-aware assistants.
Every character in the prefix is billed on every replayed turn. "[%Y-%m-%d %H:%M] " is enough for most agents; the default adds the weekday and timezone for readability.
A custom timestamp_template must render a YYYY-MM-DD HH:MM inside the bracket — the replay de-dup regex anchors on that date-time, not on the English weekday. Templates that omit %a (or run under non-English locales) stay safe.
Don’t hand-format time prefixes in instructions. The session manager strips and re-stamps each turn so replay de-dup works; a manual prefix bypasses that and accumulates on history replay.

Per-Chat Session Scope

Share one transcript across a group — the scope this feature stacks on top of

Session Compaction

How stamped turns survive history compaction

Bot Gateway

Top-level gateway config that owns the session: block

Chat

Chat-level docs where received_at shows up