Timestamp for Chat Messages & Tool Calls

Timestamps in the chat messages and tool calls. Sometimes I’m working on multiple projects at the same time, and so when I come back to what Cursor is doing, I notice that it’s been working on the same file for a long time, but I don’t actually know how long.

Every once in a while, especially ever since Claude 4 Sonic came out, it gets stuck in these weird loops—working on one file for 5 to 10 minutes—and I don’t even notice it, because I’m working on other projects at the same time.

So it’d be great to see the timestamp of when it started that tool call so that I know if it’s been a minute or two, it’s definitely stuck in a loop, and I can try to kick it out of the loop with some prompts.

Agree this would be nice!
Seems like a dupe of Please mention timestamp in chats - #3 by Malcolm-B-Breaks

I really need this for my projects. I want to rollback to a specific state of my code that I know I had yesterday but I can’t remember where my prompts started yesterday and having a datetime stamp seems like such a simple update that would solve my issue.

I would love this! Timestamps in the agent would be immensely helpful and useful.

Helpful! +1

It would be great if we could see the time when Cursor or the user writes in the chat to be able to go back in the history when troubleshooting.

That and the model (or Auto) that generated the response.

+1 these are both great suggestions.

It’s such a basic thing, and adds so much value in managing historic chats. Agents really need this.

BIG BUMP on this

I’ve needed this at least half a dozen times and keep looking for it.
This would be such a nice quality of life improvement.

Found a sort of solution with rules, also added a message ID for making references to specific requests.

Create rule with

At the beginning of each prompt response, print out an iterated message ID and a timestamp. So something like
Message ID: 7
Timestamp: 8:00pm CST, 3/4/26

Then in action:

Update: The time is often not correct

"At the beginning of every response, print a Message ID (incrementing from 1 in this thread) and the current timestamp.

CRITICAL: To ensure the timestamp is 100% accurate and not hallucinated:

  1. use to get the curent time https://timeapi.io/api/Time/current/zone?timeZone=Asia/Dubai
  2. Increment the Message ID starting from 1 in this thread.
  3. Print the Message ID and the accurate Timestamp at the very start of your response.

it should be like below

Timestamp : Friday, March 13, 2026, 02:46 AM

Edit: Made some changes that work fine on all platforms and always return the time in your time zone.

Would also like to see this. Even if we could just hover the mouse over a chat to see when a request was started/finished.

I seriously can’t believe this simple, yet Indispensable feature still hasn’t been implemented. :thinking:

Here is my more strict prompt of @MidnightOak workaround:

At the very start of every response, print a metadata header in the following format:

**Message ID:** <sequential integer starting at 1 for this chat> (<formatted timestamp>)

RULES AND FORMAT REQUIREMENTS:

1. Message ID:
	- Assume Message ID starts at 1 in a new chat
	- Increments by 1 for each assistant response in that same chat

2. Timestamp:
   - MUST attempt to fetch from:
     https://timeapi.io/api/Time/current/zone?timeZone=America/Chicago

   - Format EXACTLY as:
     Fri Apr 3, 2026, 1:23 PM

   - If API call fails:
     - Use best estimate
     - Append: " (estimated)"

   - NEVER claim API usage if it was not actually used.

3. This header is REQUIRED:
   - Must appear at the VERY TOP of EVERY response
   - No exceptions
   - No skipping
   - No additional text before it

And here is the rule that Cursor created:

---
description: Required response header — Message ID, Chicago time (timeapi.io) — at the start of every assistant message.
alwaysApply: true
---

## Response metadata header (required)

At the **very start of every assistant response**, print this metadata header **first**. **No text, markdown, or whitespace may appear before it.**

```text
**Message ID:** <sequential integer starting at 1 for this chat> (<formatted timestamp>)
```

### 1. Message ID

- Assume **Message ID = 1** for the **first** assistant message in a **new** chat.
- For each later assistant message in that **same** chat, use the previous assistant message’s ID **+ 1**.
- **How to derive the number when the UI does not provide it:** Treat each **complete prior assistant reply** visible in the conversation as one step; the ID for **this** reply is **1 + (count of those prior assistant replies)**. If the transcript is clearly truncated or ambiguous, use the **best defensible count** from what is visible (still output an integer, not a guess labeled as exact if uncertain—prefer consistency with visible turns).

### 2. Timestamp (inside the parentheses on the Message ID line)

- **MUST** attempt to fetch current time for **America/Chicago** from:
  - `https://timeapi.io/api/Time/current/zone?timeZone=America/Chicago`
- Use whatever HTTP/tool mechanism the environment provides (e.g. `WebFetch`, `curl`, etc.).
- Format **exactly** like:
  - `Fri Apr 3, 2026, 1:23 PM`
  (weekday short name, short month, day, year, comma, 12-hour time with minutes, space, AM/PM)
- If the API call **succeeds**: use that instant; **do not** append `(estimated)`.
- If the API call **fails** or cannot be run: use the **best estimate** (e.g. from user/session “today” context) and append **` (estimated)`** to the timestamp string.
- **Never** claim the timestamp came from the API unless the request was actually made and parsed.

### 3. Non-negotiable placement

- This header is **required** on **every** response.
- It must be the **first** content in the message.
- **No exceptions**, **no skipping**, and **no** additional text **before** the header.

Hope this helps someone!

-S

Also surprised this isn’t merged, would have saved our company’s Devops a lot of time