Cursor Agent CLI, --print ile birlikte kullanıldığında --output-format seçeneğiyle birden fazla çıktı formatı sunar. Bu formatlar, programatik kullanım için yapılandırılmış formatları (json, stream-json) ve insan tarafından okunabilir ilerleme takibi için basitleştirilmiş bir metin formatını içerir.
Varsayılan --output-format değeri stream-json’dır. Bu seçenek yalnızca yazdırma (--print) yapılırken veya yazdırma modu kestirildiğinde (TTY olmayan stdout ya da pipe edilen stdin) geçerlidir.

JSON formatı

json çıktı formatı, çalışma başarıyla tamamlandığında tek bir JSON nesnesi (ardından bir satır sonu) üretir. Delta’lar ve araç olayları yayımlanmaz; metin nihai sonuca birleştirilir. Hata durumunda süreç sıfırdan farklı bir kodla sonlanır ve stderr’e bir hata mesajı yazar. Hata durumlarında iyi biçimlendirilmiş bir JSON nesnesi üretilmez.

Başarılı yanıt

Başarıyla tamamlandığında, CLI aşağıdaki yapıda bir JSON nesnesi üretir:
{
  "type": "result",
  "subtype": "success",
  "is_error": false,
  "duration_ms": 1234,
  "duration_api_ms": 1234,
  "result": "<full assistant text>",
  "session_id": "<uuid>",
  "request_id": "<optional request id>"
}
FieldDescription
typeTerminal sonuçlar için her zaman "result"
subtypeBaşarılı tamamlanmalar için her zaman "success"
is_errorBaşarılı yanıtlar için her zaman false
duration_msToplam yürütme süresi (milisaniye cinsinden)
duration_api_msAPI istek süresi (milisaniye cinsinden) (şu anda duration_ms ile aynı)
resultTam asistan yanıt metni (tüm metin deltalarının birleştirilmesi)
session_idBenzersiz oturum tanımlayıcısı
request_idİsteğe bağlı istek tanımlayıcısı (atlanabilir)

Stream JSON formatı

stream-json çıktı formatı, satır sonu ile ayrılmış JSON (NDJSON) üretir. Her satır, yürütme sırasında gerçek zamanlı bir olayı temsil eden tek bir JSON nesnesi içerir. Akış, başarı durumunda sonlandırıcı bir result olayıyla biter. Hata durumunda süreç sıfır olmayan bir kodla çıkar ve akış, sonlandırıcı bir olay olmadan erken sona erebilir; stderr’e bir hata mesajı yazılır.

Olay türleri

Sistem başlatma

Her oturumun başında bir kez yayımlanır:
{
  "type": "system",
  "subtype": "init",
  "apiKeySource": "env|flag|login",
  "cwd": "/absolute/path",
  "session_id": "<uuid>",
  "model": "<model display name>",
  "permissionMode": "default"
}
tools ve mcp_servers gibi gelecekteki alanlar bu olaya eklenebilir.

Kullanıcı mesajı

Kullanıcının girdi istemini içerir:
{
  "type": "user",
  "message": {
    "role": "user",
    "content": [{ "type": "text", "text": "<prompt>" }]
  },
  "session_id": "<uuid>"
}

Asistan metin deltası

Asistan yanıtını oluştururken birden fazla kez yayımlanır. Bu olaylar artımlı metin parçaları içerir:
{
  "type": "assistant",
  "message": {
    "role": "assistant",
    "content": [{ "type": "text", "text": "<delta chunk>" }]
  },
  "session_id": "<uuid>"
}
Tam asistan yanıtını yeniden oluşturmak için tüm message.content[].text değerlerini sırayla birleştir.

Araç çağrısı olayları

Araç çağrıları başlangıç ve tamamlama olaylarıyla izlenir: Araç çağrısı başlatıldı:
{
  "type": "tool_call",
  "subtype": "started",
  "call_id": "<string id>",
  "tool_call": {
    "readToolCall": {
      "args": { "path": "file.txt" }
    }
  },
  "session_id": "<uuid>"
}
Araç çağrısı tamamlandı:
{
  "type": "tool_call",
  "subtype": "completed",
  "call_id": "<string id>",
  "tool_call": {
    "readToolCall": {
      "args": { "path": "file.txt" },
      "result": {
        "success": {
          "content": "file contents...",
          "isEmpty": false,
          "exceededLimit": false,
          "totalLines": 54,
          "totalChars": 1254
        }
      }
    }
  },
  "session_id": "<uuid>"
}

Araç çağrısı türleri

Dosya okuma aracı:
  • Başlatıldı: tool_call.readToolCall.args { "path": "file.txt" } içerir
  • Tamamlandı: tool_call.readToolCall.result.success dosya üstverisini ve içeriğini içerir
Dosya yazma aracı:
  • Başlatıldı: tool_call.writeToolCall.args { "path": "file.txt", "fileText": "content...", "toolCallId": "id" } içerir
  • Tamamlandı: tool_call.writeToolCall.result.success { "path": "/absolute/path", "linesCreated": 19, "fileSize": 942 } içerir
Diğer araçlar:
  • { "name": "tool_name", "arguments": "..." } ile tool_call.function yapısını kullanabilir

Sonuç (terminal)

Başarılı tamamlamada yayımlanan son olay:
{
  "type": "result",
  "subtype": "success",
  "duration_ms": 1234,
  "duration_api_ms": 1234,
  "is_error": false,
  "result": "<full assistant text>",
  "session_id": "<uuid>",
  "request_id": "<optional request id>"
}

Örnek sıra

Tipik olay akışını gösteren temsilî bir NDJSON dizisi:
{"type":"system","subtype":"init","apiKeySource":"login","cwd":"/Users/user/project","session_id":"c6b62c6f-7ead-4fd6-9922-e952131177ff","model":"Claude 4 Sonnet","permissionMode":"default"}
{"type":"user","message":{"role":"user","content":[{"type":"text","text":"README.md dosyasını oku ve bir özet çıkar"}]},"session_id":"c6b62c6f-7ead-4fd6-9922-e952131177ff"}
{"type":"assistant","message":{"role":"assistant","content":[{"type":"text","text":"Ben "}]},"session_id":"c6b62c6f-7ead-4fd6-9922-e952131177ff"}
{"type":"assistant","message":{"role":"assistant","content":[{"type":"text","text":"README.md dosyasını okuyacağım"}]},"session_id":"c6b62c6f-7ead-4fd6-9922-e952131177ff"}
{"type":"tool_call","subtype":"started","call_id":"toolu_vrtx_01NnjaR886UcE8whekg2MGJd","tool_call":{"readToolCall":{"args":{"path":"README.md"}}},"session_id":"c6b62c6f-7ead-4fd6-9922-e952131177ff"}
{"type":"tool_call","subtype":"completed","call_id":"toolu_vrtx_01NnjaR886UcE8whekg2MGJd","tool_call":{"readToolCall":{"args":{"path":"README.md"},"result":{"success":{"content":"# Project\n\nThis is a sample project...","isEmpty":false,"exceededLimit":false,"totalLines":54,"totalChars":1254}}}},"session_id":"c6b62c6f-7ead-4fd6-9922-e952131177ff"}
{"type":"assistant","message":{"role":"assistant","content":[{"type":"text","text":" ve bir özet çıkaracağım"}]},"session_id":"c6b62c6f-7ead-4fd6-9922-e952131177ff"}
{"type":"tool_call","subtype":"started","call_id":"toolu_vrtx_01Q3VHVnWFSKygaRPT7WDxrv","tool_call":{"writeToolCall":{"args":{"path":"summary.txt","fileText":"# README Özeti\n\nBu proje şunları içeriyor...","toolCallId":"toolu_vrtx_01Q3VHVnWFSKygaRPT7WDxrv"}}},"session_id":"c6b62c6f-7ead-4fd6-9922-e952131177ff"}
{"type":"tool_call","subtype":"completed","call_id":"toolu_vrtx_01Q3VHVnWFSKygaRPT7WDxrv","tool_call":{"writeToolCall":{"args":{"path":"summary.txt","fileText":"# README Özeti\n\nBu proje şunları içeriyor...","toolCallId":"toolu_vrtx_01Q3VHVnWFSKygaRPT7WDxrv"},"result":{"success":{"path":"/Users/user/project/summary.txt","linesCreated":19,"fileSize":942}}}},"session_id":"c6b62c6f-7ead-4fd6-9922-e952131177ff"}
{"type":"result","subtype":"success","duration_ms":5234,"duration_api_ms":5234,"is_error":false,"result":"README.md dosyasını okuyacağım ve bir özet çıkaracağım","session_id":"c6b62c6f-7ead-4fd6-9922-e952131177ff","request_id":"10e11780-df2f-45dc-a1ff-4540af32e9c0"}

Metin formatı

text çıktı formatı, agent’in eylemlerinin sadeleştirilmiş, insan tarafından okunabilir bir akışını sunar. Ayrıntılı JSON olayları yerine, agent’in gerçek zamanlı olarak ne yaptığını özlü metin açıklamalarıyla verir. Bu format, yapılandırılmış veriyi ayrıştırma yükü olmadan agent’in ilerlemesini izlemek için kullanışlıdır; bu da onu loglama, hata ayıklama veya basit ilerleme takibi için ideal hâle getirir.

Örnek çıktı

Dosya okundu
Dosya düzenlendi
Terminal komutu çalıştırıldı
Yeni dosya oluşturuldu
Her eylem, agent onu gerçekleştirirken yeni bir satırda görünür ve görevin ilerleyişi hakkında anında geri bildirim sağlar.

Uygulama notları

  • Her olay, \n ile sonlandırılan tek bir satır olarak yayımlanır
  • thinking olayları yazdırma modunda bastırılır ve hiçbir çıktı biçiminde görünmez
  • Alan eklemeleri zaman içinde geriye dönük uyumlu bir şekilde yapılabilir (tüketiciler bilinmeyen alanları yok saymalıdır)
  • Akış biçimi gerçek zamanlı güncellemeler sağlar, JSON biçimi ise sonuçları vermeden önce tamamlanmayı bekler
  • Tam yanıtı yeniden oluşturmak için tüm assistant mesaj deltalarını birleştir
  • Araç çağrısı kimlikleri, başlangıç/tamamlama olaylarını ilişkilendirmek için kullanılabilir
  • Oturum kimlikleri, tek bir aracının çalıştırılması boyunca tutarlı kalır