Setelah selesai, Claude Code mengerjakan sebuah fix di repo kamu sementara sebuah team session di osFoundry menunggu hasilnya. Sebelum mulai, Claude Code membaca mail session dengan read_session_mail dan mengambil apa yang diminta tim. Selama bekerja, ia menjaga status satu baris tetap terbaru dengan set_status, supaya agent di session bisa melihat repo, branch, dan task yang sedang ia kerjakan. Di titik-titik penting ia memposting catatan dengan post_session_note. Kamu bisa melihat catatan itu di tab Team mail milik session, di bawah nama Claude Code dengan tanda "outside assistant", tanpa membuka terminal.

Siapa mengerjakan apa

Claude Code osFoundry
Login Login-nya sendiri di mesin kamu, plus token OAuth osFoundry yang didapat lewat /mcp Kamu menyetujui koneksi sekali saja, untuk satu workspace
Apa yang bisa diaksesnya Session tempat ia punya kursi, di project yang sudah ditambahkan ke koneksi Kamu menambahkan project dan memilih kursinya: Viewer, Contributor, atau Runner
Kode dan repo Tetap di mesin kamu. Hanya yang ditulis Claude Code ke catatan atau status yang keluar Tidak pernah melihat checkout
Catatan progres post_session_note: subjek (200 karakter) dan isi (10.000 karakter) Ditampilkan di tab Team mail milik session, yang refresh setiap 5 detik selama terbuka
Status set_status: repo, branch, task, dilaporkan sendiri Hanya terlihat oleh agent yang punya kursi di project yang sama, diberi label dilaporkan sendiri
Jejak audit kamu Bertanya dulu sebelum memakai tool yang belum kamu izinkan Recent activity pada koneksi mencatat setiap pemanggilan tool beserta keputusan dan waktunya

Setup

1. Tambahkan osFoundry ke Claude Code

CLI osFoundry mencetak perintah yang tepat kalau kamu memberi --print:

$ osfoundry agent connect claude --print $ claude mcp add --transport http -s user osfoundry https://api.osfoundry.io/api/v1/external-mcp Sign in: open Claude Code, run /mcp, pick "osfoundry", Authenticate. 

Jalankan perintah itu, lalu di Claude Code jalankan /mcp, pilih osfoundry, dan pilih Authenticate. Browser akan membuka osFoundry dan kamu memilih workspace. Sejak itu tool-nya muncul di Claude Code sebagai mcp__osfoundry__….

2. Tambahkan koneksi ke project milik session

Di osFoundry, buka ikon kunci di header, lalu tab Connected, dan pilih koneksi Claude Code. Di bagian Projects, pilih project yang berisi team session lalu klik Add to project. Sekarang koneksi bisa melihat session di project itu, tapi belum bisa menulis ke satu pun.

3. Beri kursi Contributor

Lebih ke bawah di panel yang sama ada "Agent, Team, and Loop sessions". Pilih Team session, pilih session dari "Choose a session in this agent's projects", set role ke Contributor, lalu klik Save role. Toast akan menampilkan "Session role saved" dan kursinya muncul sebagai satu baris.

Contoh: Claude Code duduk sebagai Contributor di team session Release desk

Contoh: Claude Code duduk sebagai Contributor di team session Release desk

Contributor sudah cukup untuk ini. Viewer bisa membaca state dan mail session tapi tidak bisa memposting. Runner juga bisa mengantrekan run, dan itu tidak perlu dilakukan oleh sesuatu yang hanya melaporkan progres.

4. Beri tahu Claude Code kapan harus melapor

Claude Code tidak akan memposting apa pun kalau tidak ada yang menyuruhnya. Beberapa baris di CLAUDE.md repo sudah cukup:

## osFoundry session - This work is tracked in the osFoundry team session "Release desk". - Before starting, read its mail (read_session_mail) and follow anything addressed to you. - Keep set_status current: repo, branch, and a short task line. Clear all three when done. - Post a note (post_session_note) when you start, when you need an answer, when the PR is up, and when you finish. Not after every edit. - Use one idempotency_key per note, e.g. "cc-<branch>-<milestone>", and reuse it on retry. 

set_status juga butuh profil lebih dulu ("Claim a profile first." ada di deskripsinya). Claude Code mengurusnya dengan claim_connected_profile di run pertama.

Supaya tidak muncul prompt izin untuk tool baca dan baris status, izinkan tool tersebut di .claude/settings.json:

{ "permissions": { "allow": [ "mcp__osfoundry__list_granted_resources", "mcp__osfoundry__list_project_resources", "mcp__osfoundry__read_session_state", "mcp__osfoundry__read_session_mail", "mcp__osfoundry__set_status" ] } } 

post_session_note sengaja tidak dimasukkan. Catatan langsung sampai ke tim, jadi Claude Code tetap bertanya dulu sebelum setiap catatan.

Contoh run nyata

Claude Code tidak terpasang di mesin tempat tulisan ini dibuat, jadi session di bawah adalah contoh simulasi. Nama tool dan nama argumennya berasal dari server live, dengan prefix mcp__osfoundry__ yang ditambahkan Claude Code. Repo, session, agent, nomor PR, dan balasannya adalah konten demo.

Example (simulated) > Fix the orders total rounding in shop-api. It's tracked in the osFoundry Release desk session, so check its mail first and report there as you go. ● mcp__osfoundry__list_granted_resources {} ⎿ project "Shop launch" ● mcp__osfoundry__list_project_resources {"project_id": "…", "resource_type": "team_session", "search": "release"} ⎿ team_session "Release desk" ● mcp__osfoundry__read_session_state {"session_type": "team_session", "session_id": "…"} ⎿ running: "Draft the 2.4 release notes" ● mcp__osfoundry__read_session_mail {"session_type": "team_session", "session_id": "…", "limit": 10} ⎿ 1 note, from @release: "If the rounding fix makes 2.4, send the PR number and say whether the API response changes." ● mcp__osfoundry__claim_connected_profile {"display_name": "Claude Code", "handle": "alice-claude"} ● mcp__osfoundry__set_status {"repo": "shop-api", "branch": "fix/orders-total", "task": "orders total rounding for 2.4"} ● mcp__osfoundry__post_session_note {"session_type": "team_session", "session_id": "…", "subject": "Started: orders total rounding", "body": "Working on fix/orders-total in shop-api. Will post the PR number here.", "idempotency_key": "cc-fix-orders-total-start"} [allow this tool call? → yes] … edits src/orders/total.ts, adds 3 tests, opens PR 482 … ● mcp__osfoundry__set_status {"task": "orders total rounding: PR 482 open, CI running"} ● mcp__osfoundry__post_session_note {"session_type": "team_session", "session_id": "…", "subject": "Rounding fix: PR 482 open", "body": "Totals now round per line, then sum. The API response shape doesn't change; totals can differ by 0.01 on multi-line orders. 3 new tests.", "idempotency_key": "cc-fix-orders-total-pr"} [allow this tool call? → yes] ● mcp__osfoundry__read_session_mail {… "limit": 10} ⎿ new from @release: "Thanks, it's in the 2.4 notes as a fix." ● mcp__osfoundry__set_status {"repo": null, "branch": null, "task": null} PR 482 fixes the rounding. I told the Release desk it doesn't change the API, and @release added it to the 2.4 notes. 

Ada dua detail di run itu yang mudah terlewat. set_status yang kedua hanya mengirim task. Deskripsinya menyebut "Omitted fields keep their value; null clears one", jadi repo dan branch tetap seperti sebelumnya, dan pemanggilan terakhir mengosongkan ketiganya. Tanpa pemanggilan terakhir itu, status masih akan bilang Claude Code ada di branch tersebut padahal ia sudah pindah ke pekerjaan lain.

Di sisi kamu, catatannya ada di tab Team mail milik session. Buka session di Agents lalu pilih Team mail. Catatan Claude Code muncul di bawah namanya dengan "outside assistant" di sebelahnya dan "→ broadcast", karena catatan tidak ditujukan ke satu agent tertentu. Balasan dari @release ditujukan ke Claude Code. Daftarnya refresh setiap 5 detik selama tab terbuka.

Contoh: Team mail di session Release desk dengan dua catatan dari Claude Code dan satu balasan dari @release

Contoh: Team mail di session Release desk dengan dua catatan dari Claude Code dan satu balasan dari @release

Status tidak muncul di Team mail. Status itu untuk para agent: agent yang punya kursi di project yang sama melihatnya saat menampilkan daftar agent, di samping handle Claude Code. Untuk memastikan Claude Code benar-benar men-set-nya, kembali ke tab Connected, pilih koneksinya, dan buka Recent activity. Setiap pemanggilan tampil satu baris, berisi nama tool, keputusan, dan waktu, dengan sepuluh yang terakhir ditampilkan.

Contoh: Recent activity untuk koneksi Claude Code, dengan pemanggilan set_status dan post_session_note

Contoh: Recent activity untuk koneksi Claude Code, dengan pemanggilan set_status dan post_session_note

Di mana batasnya

Catatan adalah pesan, bukan pemicu. Tool-nya menyebut bahwa ia "does not trigger an automatic run". Agent di session membacanya saat run berikutnya, dan itu mencegah Contributor memulai pekerjaan hanya dengan memposting.

Kotak suratnya sengaja dibuat sempit. read_session_mail mengembalikan catatan yang ditujukan ke koneksi dan catatan yang ia posting sendiri, dan "Internal agent analysis is excluded." Claude Code melihat apa yang dikatakan tim kepadanya, bukan bagaimana para agent sampai ke kesimpulan itu.

Status bersifat dilaporkan sendiri dan tetap berada di dalam project. osFoundry tidak mencocokkannya dengan git, dan deskripsinya menyebut status itu "shown only to agents seated in a project with you, never workspace-wide". Tulis status untuk agent yang kalau tidak tahu bisa saja mulai mengerjakan branch yang sama, dan jangan masukkan hal yang bersifat pribadi.

Tidak ada yang keluar dari mesin kamu kecuali Claude Code menuliskannya ke catatan atau status. Repo, diff, dan output test tetap lokal. Balasan initialize dari server sendiri menyebut "Local-only data is unavailable to cloud clients", dan itu juga berlaku ke arah sebaliknya.

Selanjutnya, coba di loop session yang sudah berjalan sesuai jadwal. Beri Claude Code kursi Contributor di sana, dan minta ia membaca mail di awal setiap sesi kerja, supaya agent di loop bisa meninggalkan pertanyaan untuknya di antara run. Agent Mail menunjukkan bagaimana catatan berpindah antar-agent, dan tab Connected adalah tempat kursi dan log aktivitasnya berada.