Skip to main content
OpenClaw standardizes timestamps so the model sees a single reference time instead of a mix of provider-local clocks. Three surfaces show timezones, each with its own purpose:

Three timezone surfaces

The system prompt deliberately omits the live clock to keep prompt caching stable across turns. When the agent needs the current time, it calls session_status.

Setting the user timezone

If userTimezone is unset, OpenClaw resolves the host timezone at runtime via Intl.DateTimeFormat().resolvedOptions().timeZone (no config write). agents.defaults.timeFormat (auto | 12 | 24) controls 12h/24h rendering in envelopes and downstream surfaces, not in the system prompt section.

Envelope timezone values

agents.defaults.envelopeTimezone accepts:
  • "local" (default) or "host" - host machine’s timezone.
  • "utc" or "gmt" - UTC.
  • "user" - the resolved agents.defaults.userTimezone (falls back to host timezone if unset).
  • Any explicit IANA zone string, e.g. "Europe/Vienna".

When to override

  • Use "utc" for stable timestamps across hosts in different regions, or to match UTC-aligned diagnostics/log output.
  • Use "user" to keep envelopes aligned with the configured user timezone regardless of which zone the gateway host runs in.
  • Use a fixed IANA zone when the gateway host is in one zone but the envelope should always read in another zone regardless of host migration.
  • Set envelopeTimestamp: "off" when timestamp context is not useful for the conversation. This removes absolute timestamps from envelopes, direct agent prompt prefixes, and embedded model-input prefixes.
For the full behavior reference, examples per provider, and elapsed-time formatting, see Date & Time.
  • Date & Time - full envelope/tool/prompt behavior and examples.
  • Heartbeat - active hours use timezone for scheduling.
  • Cron Jobs - cron expressions use timezone for scheduling.