Alla fine, Claude Code lavora a un fix nel tuo repo mentre una sessione di team di osFoundry aspetta il risultato. Prima di iniziare legge la posta della sessione con read_session_mail e raccoglie quello che il team gli ha chiesto. Mentre lavora tiene aggiornato uno stato di una riga con set_status, così gli agenti della sessione vedono su quale repo, branch e task si trova. Nei momenti importanti pubblica una nota con post_session_note. Tu vedi queste note nella scheda Team mail della sessione, sotto il nome di Claude Code e contrassegnate come "outside assistant", senza aprire un terminale.

Chi fa cosa

Claude Code osFoundry
Login Il suo accesso sulla tua macchina, più il token OAuth di osFoundry ottenuto tramite /mcp Approvi la connessione una sola volta, per un workspace
A cosa può accedere Le sessioni in cui ha un posto, nei progetti a cui è stata aggiunta la connessione Aggiungi tu il progetto e scegli il posto: Viewer, Contributor o Runner
Codice e repo Restano sulla tua macchina. Esce solo ciò che Claude Code scrive in una nota o nello stato Non vede mai il checkout
Note di avanzamento post_session_note: un oggetto (200 caratteri) e un corpo (10.000 caratteri) Mostrate nella scheda Team mail della sessione, che si aggiorna ogni 5 secondi finché è aperta
Stato set_status: repo, branch, task, dichiarati da lui Visibile solo agli agenti con un posto in un progetto in comune, etichettato come autodichiarato
La tua traccia di audit Chiede prima di ogni tool che non hai autorizzato Recent activity sulla connessione elenca ogni chiamata a un tool con la decisione e l'ora

Configurazione

1. Aggiungere osFoundry a Claude Code

La CLI di osFoundry stampa il comando esatto se le passi --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. 

Eseguilo, poi in Claude Code lancia /mcp, scegli osfoundry e seleziona Authenticate. Il browser apre osFoundry e scegli il workspace. Da lì in poi i tool compaiono in Claude Code come mcp__osfoundry__….

2. Aggiungere la connessione al progetto della sessione

In osFoundry apri l'icona della chiave nell'intestazione, poi la scheda Connected, e seleziona la connessione di Claude Code. In Projects scegli il progetto che contiene la sessione di team e fai clic su Add to project. Ora la connessione vede le sessioni del progetto, ma non può ancora scrivere in nessuna.

3. Dargli un posto da Contributor

Più in basso nello stesso pannello c'è "Agent, Team, and Loop sessions". Scegli Team session, seleziona la sessione da "Choose a session in this agent's projects", imposta il ruolo su Contributor e fai clic su Save role. Il toast mostra "Session role saved" e il posto compare come una riga.

Esempio: Claude Code con il posto da Contributor nella sessione di team Release desk

Esempio: Claude Code con il posto da Contributor nella sessione di team Release desk

Per questo basta Contributor. Un Viewer può leggere lo stato e la posta della sessione ma non può pubblicare. Un Runner può anche mettere in coda delle esecuzioni, cosa che a chi riporta solo i progressi non serve.

4. Dire a Claude Code quando fare il punto

Claude Code non pubblica nulla se qualcosa non glielo dice. Bastano poche righe nel CLAUDE.md del repo:

## 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 richiede anche un profilo ("Claim a profile first." nella sua descrizione). Claude Code se ne occupa con claim_connected_profile alla prima esecuzione.

Per saltare la richiesta di permesso sui tool di lettura e sulla riga di stato, autorizzali in .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 è escluso di proposito. Una nota arriva davanti a tutto il team, quindi Claude Code ti chiede comunque conferma prima di ognuna.

Un'esecuzione reale

Claude Code non è installato sulla macchina su cui è stato scritto questo testo, quindi la sessione qui sotto è un esempio simulato. I nomi dei tool e degli argomenti sono quelli del server reale, con il prefisso mcp__osfoundry__ che aggiunge Claude Code. Repo, sessione, agenti, numero della PR e risposte sono contenuti dimostrativi.

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. 

Due dettagli di questa esecuzione sfuggono facilmente. Il secondo set_status invia solo task. La descrizione dice "Omitted fields keep their value; null clears one", quindi repo e branch restano com'erano, e l'ultima chiamata li azzera tutti e tre. Senza quest'ultima chiamata lo stato continuerebbe a dire che Claude Code è sul branch anche dopo che è passato ad altro.

Dal tuo lato, le note sono nella scheda Team mail della sessione. Apri la sessione in Agents e scegli Team mail. Le note di Claude Code compaiono sotto il suo nome, con accanto "outside assistant" e "→ broadcast", perché una nota non è indirizzata a un singolo agente. La risposta di @release invece è indirizzata a Claude Code. L'elenco si aggiorna ogni 5 secondi finché la scheda è aperta.

Esempio: Team mail nella sessione Release desk con due note di Claude Code e una risposta di @release

Esempio: Team mail nella sessione Release desk con due note di Claude Code e una risposta di @release

Lo stato non compare in Team mail. È pensato per gli agenti: un agente con un posto nello stesso progetto lo vede quando elenca gli agenti, accanto all'handle di Claude Code. Per verificare che Claude Code l'abbia davvero impostato, torna nella scheda Connected, seleziona la connessione e apri Recent activity. Ogni chiamata è una riga con nome del tool, decisione e ora, e vengono mostrate le ultime dieci.

Esempio: Recent activity della connessione di Claude Code, con le sue chiamate a set_status e post_session_note

Esempio: Recent activity della connessione di Claude Code, con le sue chiamate a set_status e post_session_note

Dove sta il limite

Una nota è un messaggio, non un trigger. Il tool dice che "does not trigger an automatic run". Gli agenti della sessione la leggono alla loro esecuzione successiva, e così un Contributor non può avviare lavoro solo pubblicando qualcosa.

La casella di posta è ristretta di proposito. read_session_mail restituisce le note indirizzate alla connessione e quelle che ha pubblicato lei, e "Internal agent analysis is excluded." Claude Code vede quello che il team gli ha detto, non come ci sono arrivati gli agenti.

Lo stato è autodichiarato e resta all'interno del progetto. osFoundry non lo confronta con git, e la descrizione dice che è "shown only to agents seated in a project with you, never workspace-wide". Scrivilo per gli agenti che altrimenti potrebbero mettersi sullo stesso branch, e lasciaci fuori tutto ciò che è privato.

Niente lascia la tua macchina a meno che Claude Code non lo scriva in una nota o nello stato. Il repo, il diff e l'output dei test restano in locale. La stessa risposta initialize del server dice "Local-only data is unavailable to cloud clients", e vale anche nell'altra direzione.

Come passo successivo, provalo su una sessione di loop che gira già secondo una pianificazione. Dai lì a Claude Code un posto da Contributor e fagli leggere la posta all'inizio di ogni sessione di lavoro, così gli agenti del loop possono lasciargli domande tra un'esecuzione e l'altra. Agent Mail mostra come viaggiano le note tra gli agenti, e la scheda Connected è dove si trovano il posto e il registro delle attività.