65%

temporal reasoning alignment ceiling
frontier models — with timestamps injected
TicToc benchmark · arxiv 2510.23853 · Oct 2025

Your agent
doesn't know
what time it is.

Having timestamps in context is not enough. Agents need explicit rules for when to look at the clock. Chronos ships those rules, backed by a hook-populated JSONL ledger of every tool call made in the session.

install — Claude Code
git clone https://github.com/OthmanAdi/chronos ~/chronos
cd ~/chronos
./installers/claude-code/install.sh
verify — check ledger is writing
tail ~/.chronos/ledger-*.jsonl
§ 01

The problem

LLMs do not know what time it is. They guess. They report "just now" when it was two hours ago. They retry failed commands without checking that the last attempt was 10 seconds ago. They loop silently in autonomous mode with no idle detection.

The paper measured this on 1,800 multi-turn dialogues across 76 scenario types. Timestamps appear in fewer than 4% of reasoning traces even when explicitly available in context. The best frontier models hit a ceiling at 65% alignment with human temporal judgment.

The fix is not more timestamps. The fix is decision rules that tell the agent when to consult them. That is what chronos provides: 7 triggers, a queryable ledger, and honest degradation on platforms without hook support.

ledger entry format — ~/.chronos/ledger-<session>.jsonl
{"tool_use_id":"abc",
 "tool":"Bash",
 "args_hash":"f0e1d2c3b4a5",
 "started_at":"2026-04-23T20:00:00Z",
 "started_epoch":1777233600}

{"tool_use_id":"abc",
 "tool":"Bash",
 "args_hash":"f0e1d2c3b4a5",
 "finished_at":"2026-04-23T20:00:12Z",
 "finished_epoch":1777233612,
 "duration_ms":12000,
 "success":true}

Two events per tool call. One on PreToolUse (started_at),
one on PostToolUse (finished_at + duration_ms + success).
args_hash = SHA-256 of tool args, first 12 hex chars.

§ 02

7 decision triggers

01
Before retrying a failed command
Check the ledger for the same tool and args_hash. If the last failure was under 60 seconds ago, change strategy. Applies to deploys and pushes as well.
02
Before trusting memory or a cached result
Staleness thresholds by source: 5 min for git status and env vars, 1 hour for file contents, 7 days for persistent memory, 5 min for external APIs.
03
Before reporting progress
Use session_duration to calibrate verbosity: terse under 5 min, one paragraph at 5–30 min, structured timestamped recap over 30 min.
04
Before running a long or destructive command
Scan the ledger for the same tool. If the last 3 duration_ms values each exceed 2x the prior median, something is degrading. Surface it before proceeding.
05
Idle-loop detection in autonomous mode
When since_last_user exceeds the idle threshold (default 900s, configurable via CHRONOS_IDLE_THRESHOLD_SEC), pause and ask for direction.
06
Before any "just now" or "in a minute" statement
Replace imprecise language with a concrete ISO delta. "Last attempt 47s ago (tool_use_id abc123, EACCES)" not "just tried that."
07
Date or time questions
Never guess. Read now_utc from the SessionStart baseline if session_duration is under 10 min. Otherwise read the latest finished_at from the ledger, or run date -u fresh.
§ 03

8 platforms

Platform Support What you get
Claude Code Full All 5 hooks plus SKILL.md
Codex CLI Full All 5 hooks (PreToolUse targets Bash only) plus AGENTS.md
OpenCode Partial TypeScript plugin writes ledger; SKILL reads it
PI (pi-mono) Partial SKILL plus optional extension for ledger
OpenClaw Partial SKILL plus optional plugin-sdk for ledger
Cursor Skill-only Always-on rule with shell-fallback instructions
Hermes Skill-only SKILL injects as user message
ADAL Skill-only SKILL.md only (hook API not public)
§ 04

vs. prior art

Feature chronos hodgesmr/temporal-awareness temporal-awareness-mcp
Decision rules 7 triggers None None
Tool-use ledger JSONL, per-call timing None None
Session baseline SessionStart hook Single date injection API call per request
Per-turn elapsed UserPromptSubmit hook None None
Idle detection Stop hook None None
Degraded mode Explicit fallback + disclosure N/A N/A
Platforms 8 Claude Code only Any MCP client
Shell bash + PowerShell bash Node.js
Install method ./install.sh (non-destructive) Manual symlink MCP client config

hodgesmr/temporal-awareness = prior Claude Code skill in this space. Shells date once at session start. No ledger, no decision rules, no multi-platform. The MCP servers provide time data but no decision logic and require separate MCP infrastructure.

§ 05

Install

Claude Code — full hook stack (recommended)
bash
git clone https://github.com/OthmanAdi/chronos ~/chronos
cd ~/chronos
./installers/claude-code/install.sh           # user scope
./installers/claude-code/install.sh --project # project scope only
./installers/claude-code/install.sh --dry-run # preview before writing
Codex CLI
bash
./installers/codex/install.sh
Cursor
bash
mkdir -p ~/.cursor/rules
cp .cursor/rules/chronos.mdc ~/.cursor/rules/
OpenCode
bash
mkdir -p ~/.config/opencode/plugins
cp installers/opencode/plugin.ts \
   ~/.config/opencode/plugins/chronos.ts
Uninstall
bash — removes hooks + skill directory
./installers/claude-code/install.sh --uninstall
Other platforms

PI, OpenClaw, Hermes, ADAL — see installers/<platform>/README.md in the repository.

§ 06

Academic anchor

"Even when timestamps are present in context, the best frontier models achieve only 65% alignment with human temporal judgment. Timestamps appear in fewer than 4% of reasoning traces."
Your LLM agents are temporally blind
arxiv 2510.23853
October 2025
TicToc benchmark
1,800 multi-turn dialogues
76 scenario types
Normalized PAR (Preference Alignment Rate) metric

The failure is not a data problem. The fix is not more timestamps. It is explicit rules for when to consult them. That is what chronos provides at the prompt layer — the only deployable solution before fine-tuning closes the gap.

arxiv.org/abs/2510.23853 →