OpenClawSkills
GitHub
Core Concepts • TutorialHeader.readTime

timezone

Timezone handling for agents, envelopes, and prompts

OpenClaw normalizes timestamps so the model sees a **single reference time**.

Tutorial.step

Message envelopes (local by default)

Inbound messages are wrapped in an envelope like:

Terminal
[Provider ... 2026-01-05 16:26 PST] message text

The timestamp in the envelope is **host-local by default**, with minutes precision.

You can override this with:

Json5
{
  agents: {
    defaults: {
      envelopeTimezone: "local", // "utc" | "local" | "user" | IANA timezone
      envelopeTimestamp: "on", // "on" | "off"
      envelopeElapsed: "on", // "on" | "off"
    },
  },
}

- ''envelopeTimezone: "utc"'' uses UTC.

- ''envelopeTimezone: "user"'' uses ''agents.defaults.userTimezone'' (falls back to host timezone).

- Use an explicit IANA timezone (e.g., `"Europe/Vienna"`) as a fixed offset.

- ''envelopeTimestamp: "off"'' removes absolute timestamps from envelope headers.

- ''envelopeElapsed: "off"'' removes elapsed time suffixes (the ''+2m'' style).

#

Tutorial.step

Tool payloads (raw provider data + normalized fields)

Tool calls (''channels.discord.readMessages'', ''channels.slack.readMessages'', etc.) return **raw provider timestamps**.

Terminal
[Signal Alice +1555 2026-01-18 00:19 PST] hello

We also attach normalized fields for consistency:

Terminal
[Signal Alice +1555 2026-01-18 06:19 GMT+1] hello

- ''timestampMs'' (UTC epoch milliseconds)

Terminal
[Signal Alice +1555 +2m 2026-01-18T05:19Z] follow-up
Tutorial.step

User timezone for the system prompt

Set ''agents.defaults.userTimezone'' to tell the model the user's local time zone. If it is

unset, OpenClaw resolves the **host timezone at runtime** (no config write).

The system prompt includes:

- ''Current Date & Time'' section with local time and timezone

- ''Time format: 12-hour'' or ''24-hour''

Tutorial.step

Examples

**Local (default):**

**Fixed timezone:**

Json5
{
  agents: { defaults: { userTimezone: "America/Chicago" } },
}

**Elapsed time:**

- ''Current Date & Time'' section with local time and timezone

- ''Time format: 12-hour'' or ''24-hour''

You can control the prompt format with ''agents.defaults.timeFormat'' (''auto'' | ''12'' | ''24'').

See [Date & Time](/date-time) for the full behavior and examples.