temporal reasoning alignment ceiling
frontier models — with timestamps injected
TicToc benchmark · arxiv 2510.23853 · Oct 2025
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.
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.
{"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.
date -u fresh.| 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) |
| 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.
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
./installers/codex/install.sh
mkdir -p ~/.cursor/rules cp .cursor/rules/chronos.mdc ~/.cursor/rules/
mkdir -p ~/.config/opencode/plugins cp installers/opencode/plugin.ts \ ~/.config/opencode/plugins/chronos.ts
./installers/claude-code/install.sh --uninstall
PI, OpenClaw, Hermes, ADAL — see installers/<platform>/README.md in the repository.
"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."