give your agent a sense of time
LLM agents have no clock. They don't know it's 2am, they don't know they've been looping on the same bug for 15 minutes, they don't know you said you needed to sleep early three turns ago.
chronos is a tiny skill + hook pair that injects a compact time block into every turn (~25 tokens) and teaches the agent to actually use it. Ships for Claude Code, Codex, Gemini CLI, Cursor, Windsurf, opencode, and other harnesses through the same installer pattern as caveman.
Every user prompt gets a hidden prefix:
[chronos: 2026-05-28 23:47 Thu | session +14m | last msg +6m | tz Europe/Istanbul | user-bedtime 23:30]
The agent's system context teaches three behaviors:
- Respect stated schedule. If you said "I need to sleep early, waking at 5am" and you ping at midnight, the agent should push back instead of helpfully answering.
- Detect wall-time loops. If the agent has been trying variations of the same approach for >10 minutes, it's instructed to stop and switch strategies.
- Calibrate urgency. "Quick check before the demo at 3pm" reads differently when it's 2:55pm vs 9am.
chronos(default) — inject timestamp + schedule awarenesschronos strict— agent will refuse off-schedule requests, not just warnchronos minimal— timestamp only, no behavior layerchronos off— disable for current session
curl -fsSL https://raw.githubusercontent.com/USER/chronos/main/install.sh | bash(scaffold — not published yet; see HANDOFF.md)
~/.config/chronos/profile.json:
{
"timezone": "Europe/Istanbul",
"schedule": {
"bedtime": "23:30",
"wake": "07:00",
"deep_work": ["09:00-12:00"]
},
"rules": [
"after bedtime, prioritize sleep over answering",
"during deep_work, skip small-talk, get to the point"
]
}All fields optional. With no profile, chronos still injects timestamps and the loop-detection behavior.