Claude Platform Docs
Managed AgentsSicurezza

Proteggi il tuo deployment di Managed Agents

Le impostazioni che limitano ciò che i tuoi agenti possono raggiungere e fare, a partire dalle più importanti.

Questa guida elenca le impostazioni che limitano ciò che un agente su Claude Managed Agents può raggiungere e fare, a partire dalle più importanti. Ogni sezione rimanda alla pagina che tratta l'impostazione in modo completo.

SezioneImpostazione o decisioneConsigliato
Scegli dove viene eseguito l'agenteSandbox cloud o self-hostedCloud, a meno che gli strumenti non debbano essere eseguiti su un'infrastruttura che controlli
Limita la retenetworking.type dell'ambientelimited, con solo gli host di cui l'agente ha bisogno
Conserva le credenziali nei vaultinjection_location e networking su ogni credenziale di tipo variabile d'ambienteSolo header della richiesta, e networking limited con solo gli host a cui è destinata la chiave
Limita web search e web fetchallowed_domains su ogni strumento webUna allowlist su ogni strumento. Su web_fetch, elenca solo i siti di cui l'agente ha bisogno. Su web_search, elenca i siti da cui vuoi ottenere risultati
Approva le azioni rischiosepermission_policy su ogni strumentoauto su bash, write, edit, web_fetch e sugli strumenti MCP che leggono solo dati. always_ask invece su uno strumento se non puoi annullare le sue modifiche al di fuori della sandbox, o se il solo testo dell'utente finale inoltrato non dovrebbe farlo eseguire
Dai all'agente il set di strumenti più ridottodefault_config.enabled sul toolset dell'agentefalse, poi abilita gli strumenti di cui l'agente ha bisogno
Tieni l'input non attendibile lontano dagli strumenti potentiQuali strumenti e credenziali possiede un agente quando legge input non attendibileNessun agente che legge input non attendibile ha su always_allow uno strumento che scrive file, esegue comandi o modifica record
Imposta limiti e un modo per fermare l'agentebudget su ogni sessione e deploymentUn tetto dimensionato in base a quanto prevedi che costi un'esecuzione
Facoltativamente, fai leggere ogni trascrizione a un revisore offlineUn job di revisione offline che esegui tu e che legge gli eventi di ogni sessioneFacoltativo. Una revisione pianificata di ogni sessione che è diventata inattiva o è terminata
Monitora le sessioni e rivedi la conservazioneWebhook ed eliminazione delle sessioniUn avviso quando una sessione diventa inattiva, raggiunge il suo budget o termina, e una verifica del motivo per cui è diventata inattiva. Archivia nei tuoi log gli eventi che vuoi conservare ed elimina le sessioni che non ti servono più

Rischi per la sicurezza e limiti della sandbox spiega perché queste impostazioni sono importanti e da cosa non proteggono. Per rivedere e monitorare le sessioni, consulta Rivedere e monitorare le sessioni degli agenti.

Scegli dove viene eseguito l'agente

Il luogo in cui vengono eseguiti gli strumenti dell'agente determina chi protegge la "sandbox" (ambiente isolato): Anthropic, con un ambiente cloud, oppure tu, con una sandbox self-hosted. Per scegliere tra le due opzioni e sapere cosa raggiunge Anthropic con ciascuna, consulta Scegliere un ambiente per l'agente.

Se usi una sandbox self-hosted, tieni presenti questi quattro punti:

  • Rete: Limita la rete si applica agli ambienti cloud. Per una sandbox self-hosted, imposta limiti equivalenti sul suo traffico nel tuo firewall. Il tuo firewall non limita i server MCP dichiarati da un agente, quindi rivedili, insieme a quelli che la tua applicazione imposta per una sessione.
  • Strumenti web: Gli strumenti web vengono eseguiti sui server di Anthropic, quindi il tuo firewall non li limita. Limitali con i loro elenchi di domini. Consulta Limita web search e web fetch.
  • Credenziali: Le credenziali di tipo variabile d'ambiente non sono ancora supportate con le sandbox self-hosted.
  • Isolamento e hardening: Sei responsabile di entrambi. Consulta il Modello di sicurezza.

Nessuna delle due opzioni modifica la copertura di conformità di Managed Agents né la durata di conservazione della cronologia delle sessioni. Consulta Monitora le sessioni e rivedi la conservazione.

Limita la rete

Imposta networking.type su limited ed elenca in allowed_hosts solo gli host di cui l'agente ha bisogno. Una richiesta di creazione di un ambiente che omette networking potrebbe ottenere unrestricted, quindi imposta networking in ogni richiesta di creazione. Consulta Rischi del networking senza restrizioni.

I file, i memory store e i repository GitHub che colleghi restano disponibili per l'agente indipendentemente da allowed_hosts.

Gli esempi in questa pagina usano un agente di supporto. Legge il ticket di un cliente, cerca l'ordine, legge il tuo centro assistenza e redige una risposta. La ricerca dell'ordine viene eseguita dalla tua applicazione e non richiede alcun host, quindi questo ambiente consente un solo host, il centro assistenza, per web_fetch:

ant apply environment.yaml
environment.yaml
# yaml-language-server: $schema=https://platform.claude.com/schemas/ant/beta/environment.json
name: support-agent
config:
  type: cloud
  networking:
    type: limited
    allowed_hosts:
      - help.example.com

Un ambiente limited ha tre impostazioni di networking:

ImpostazioneCosa apre al codice nella sandboxConsigliato
allowed_hostsGli host che elenchi, per qualsiasi richiestaSolo gli host di cui l'agente ha bisogno, incluso l'host di ogni server MCP che gestisci o di cui ti fidi
allow_package_managersGli host dei gestori di pacchetti. Includono ogni repository e percorso su github.com, gitlab.com e bitbucket.org, dove chiunque può pubblicare contenuti e dove il codice nella sandbox può caricare filefalse, a meno che l'impostazione packages dell'ambiente non elenchi pacchetti, il che richiede true. Se l'agente installa pacchetti durante l'esecuzione, elenca invece in allowed_hosts solo gli host dei registry di cui ha bisogno
allow_mcp_serversNessun host. Managed Agents si connette ai server MCP dai server di Anthropicfalse, con l'host di ogni server MCP che gestisci o di cui ti fidi elencato in allowed_hosts

Le impostazioni allow_package_managers e allow_mcp_servers non aggiungono host per web search e web fetch.

Lascia allow_mcp_servers disattivato, che è il valore predefinito, ed elenca in allowed_hosts l'host di ogni server MCP che gestisci o di cui ti fidi. Ogni host che elenchi è aperto anche al codice nella sandbox. Con allow_mcp_servers disattivato, un controllo alla creazione della sessione rifiuta la richiesta se l'host di un server MCP non è elencato. Consulta Fornisci l'autenticazione alla creazione della sessione. Lo stesso controllo viene eseguito quando un aggiornamento della sessione modifica mcp_servers.

Quando scegli gli host per allowed_hosts, segui queste due regole:

  • Elenca solo host che gestisci o di cui ti fidi.
  • Evita i wildcard *. e i domini di hosting condiviso dove chiunque può pubblicare contenuti.

Se l'agente mantiene bash, imposta la policy di autorizzazione dello strumento bash come descritto in Approva le azioni rischiose.

Consulta Configurazione dell'ambiente cloud per tutte le impostazioni di networking.

Conserva le credenziali nei vault

Archivia ogni segreto in un "vault" (cassaforte per credenziali). Per ogni credenziale di tipo variabile d'ambiente, imposta la posizione di iniezione solo sugli header della richiesta ed elenca solo gli host a cui è destinato il segreto. Il codice nella sandbox vede un segnaposto al posto del segreto. Managed Agents sostituisce il segnaposto con il segreto reale solo nelle richieste HTTPS in uscita verso gli host consentiti dalla credenziale. In questo modo il segreto resta fuori dalla portata diretta del modello, a meno che un servizio non lo rimandi indietro, come un endpoint che restituisce gli header della richiesta. Se il networking della credenziale è unrestricted, Managed Agents sostituisce il segnaposto con il segreto reale nelle richieste verso qualsiasi host che l'ambiente consente alla sandbox di raggiungere. Per usare un vault, passa il suo ID in vault_ids quando crei la sessione o il deployment.

ImpostazioneImpostala suPerchéCosa non fa
injection_location{"header": true, "body": false}, dopo aver verificato che il servizio legga la chiave da un headerI corpi delle richieste sono spesso costruiti a partire dal contenuto letto dall'agente, quindi una chiave in un corpo è più esposta. Specifica entrambi i campi: una richiesta di creazione che omette l'oggetto abilita entrambe le posizioni, e un aggiornamento modifica solo i campi che inviiIl codice può comunque usare la chiave su ogni host consentito dalla credenziale. Un servizio che si aspetta la chiave nel corpo riceve il segnaposto e rifiuta la richiesta
networking sulla credenzialelimited, con gli host esatti a cui è destinata la chiaveLe risposte raggiungono la sandbox senza oscuramento, quindi evita wildcard, domini di hosting condiviso e host che restituiscono gli header della richiestaNon apre l'host. Anche l'ambiente deve consentirlo
I permessi della chiave, presso il servizio che l'ha emessaSolo i permessi di cui l'agente ha bisognoL'agente può fare tutto ciò che la chiave consenteNon applicabile
Il token GitHub di un repository montatoUn token fine-grained con i permessi minimiIl codice nella sandbox può usarlo per eseguire fetch e push sul repository montato per l'intera sessione. Concedi l'accesso in scrittura solo se l'agente deve eseguire pushNon applicabile

L'agente di supporto non ha bisogno di alcuna credenziale nel vault, perché la chiave API per la tua API degli ordini è detenuta dalla tua applicazione. Se il tuo agente detiene una credenziale nel vault, consulta Aggiungi una credenziale per la richiesta in ogni linguaggio.

Tieni le chiavi fuori dai prompt di sistema, dalle definizioni degli agenti e dai messaggi. Non dare all'agente una chiave API di Claude. Anche quando una chiave API di Claude si trova in un vault, il codice nella sandbox può usarla per chiamare direttamente la Claude API. Può fare tutto ciò che quella chiave consente, come avviare o eliminare sessioni, o usare web search e web fetch. Le impostazioni degli strumenti dell'agente, le approvazioni e il budget non si applicano a quelle chiamate. In un ambiente limited, il codice può effettuare queste chiamate solo se allowed_hosts consente alla sandbox di raggiungere api.anthropic.com.

Recupera tu stesso i token e archiviali nel vault, perché un token che il codice nella sandbox recupera con un segreto archiviato torna indietro senza oscuramento.

Tieni i vault per carichi di lavoro con livelli di attendibilità diversi in workspace separati, perché qualsiasi chiave API con accesso a un workspace può fare riferimento ai suoi vault. Usa chiavi API limitate a un solo workspace.

Consulta Autenticazione con i vault per le credenziali MCP e la rotazione.

Limita web search e web fetch

Imposta allowed_domains su web_fetch con i siti di cui l'agente ha bisogno. Qualsiasi URL recuperato dall'agente può trasportare dati verso il sito a cui punta, quindi questo elenco è un controllo di sicurezza. Su web_search, imposta allowed_domains con i siti da cui vuoi ottenere risultati, in modo che i risultati provengano solo da siti che ritieni accurati. L'elenco non impedisce alla query di ricerca di raggiungere il provider di ricerca. I risultati di ricerca includono testo delle pagine, quindi l'elenco limita anche i siti il cui testo raggiunge l'agente. Imposta allowed_domains su entrambi gli strumenti per ogni tipo di ambiente.

Un elenco blocked_domains blocca gli host che elenchi e i loro sottodomini, e nessun altro host. Lo stesso contenuto può comunque raggiungere l'agente da archivi web, cache, mirror o domini correlati che non hai elencato. Non fare affidamento su blocked_domains per la sicurezza. Usa allowed_domains e indica gli host di cui ti fidi.

In un ambiente limited, l'elenco allowed_hosts di Limita la rete limita anche gli strumenti web. Un ambiente unrestricted o una sandbox self-hosted non limita gli strumenti web.

In un ambiente limitedRisultato
Una voce allowed_domains su uno strumento web abilitato è al di fuori di allowed_hostsLa creazione di una sessione fallisce con un errore 400, così come un aggiornamento della sessione che aggiunge una voce di questo tipo. Una sessione avviata da un deployment, secondo la sua pianificazione o tramite un'esecuzione manuale, viene creata comunque. Lo strumento poi non restituisce nulla dagli host al di fuori di allowed_hosts
Uno strumento web non ha un proprio elencoLo strumento restituisce pagine e risultati solo dagli host in allowed_hosts. Imposta anche allowed_domains sullo strumento
allowed_hosts non ha vociNessuno dei due strumenti web restituisce una pagina o un risultato di ricerca
Aggiungi un host ad allowed_hosts per uno strumento webL'host è aperto anche al codice nella sandbox

I due elenchi confrontano gli host in modo diverso:

ElencoVoceCorrisponde aNon corrisponde a
allowed_hosts (ambiente)example.comexample.comwww.example.com
allowed_hosts (ambiente)*.example.comOgni sottodominioexample.com
allowed_domains (strumento web)example.comexample.com e ogni sottodominioAltri domini

Se l'agente ha bisogno di un sito e di tutti i suoi sottodomini, elenca sia example.com sia *.example.com in allowed_hosts, altrimenti elenca host esatti. Se uno strumento elenca example.com e allowed_hosts elenca solo *.example.com, la sessione viene creata. Il controllo alla creazione della sessione considera example.com come compreso in *.example.com, ma lo strumento non restituisce nulla da example.com stesso. Consulta Impostare elenchi di domini su un agente per sapere come vengono confrontati i due elenchi.

Lo strumento web_fetch apre inoltre solo URL che sono già comparsi nella sessione:

Dove compare l'URLweb_fetch può aprirlo
Il testo di un messaggio utente, incluso il testo dell'utente finale che inoltriSì
La descrizione di un evento user.define_outcomeSì
L'indirizzo di un risultato di ricerca webSì
Il testo di una pagina restituita in precedenza da web_fetch (non un PDF), in cui è mostrato l'URL completoSì
Il testo del risultato di uno strumento personalizzato, quando Claude ha chiamato lo strumento direttamenteSì, a meno che il risultato non sia contrassegnato con is_error: true
Il prompt di sistemaNo
La configurazione dell'agente, incluse le voci di allowed_domainsNo
L'output di Claude stessoNo
L'output di bash e degli altri strumenti della sandboxNo
Il risultato di uno strumento MCPNo
Un file allegato a un messaggio utenteNo

In una sessione multiagente, web_fetch apre un URL proveniente da un altro agente solo se ha raggiunto quell'agente tramite una fonte contrassegnata con Sì. Il risultato di uno strumento personalizzato da una chiamata diretta conta come fonte contrassegnata con Sì. Questo vale anche se il testo è stato scritto da Claude, ad esempio quando lo strumento ripete il proprio input. Un URL può essere valido anche quando è scritto senza https://, come example.com/docs. Lo strumento web_fetch non sempre riesce ad aprire un link che mostra parole invece del suo URL, come "Contatta l'assistenza". Se l'agente deve recuperare un URL che non è comparso nella sessione, invialo in un messaggio utente.

Questa regola riduce la probabilità che un testo iniettato costruisca un URL che trasporta dati privati. Il testo dell'utente finale, i risultati di ricerca, le pagine recuperate e i risultati degli strumenti personalizzati possono comunque aggiungere URL, quindi mantieni impostato allowed_domains. La Messages API applica una regola simile con un elenco di fonti diverso. Consulta Validazione degli URL.

Un elenco di domini su web_fetch non limita lo strumento bash. Limita la rete anche in questo caso. Consulta Regole degli elenchi di domini.

Approva le azioni rischiose

Imposta auto su bash, write, edit e web_fetch, e sugli strumenti MCP che leggono solo dati. Usa invece always_ask su uno strumento se non puoi annullare le sue modifiche al di fuori della sandbox. Usalo anche su uno strumento che non dovrebbe essere eseguito solo perché lo richiede il testo dell'utente finale che inoltri. Una policy di autorizzazione determina se una chiamata a uno strumento viene eseguita, attende la tua approvazione o viene valutata dal server.

StrumentoPolicy consigliataPerché
read, glob, grepalways_allowLeggono file nella sandbox e non modificano nulla
bash, write, editauto. Usa always_ask su uno strumento se non puoi annullare le sue modifiche al di fuori della sandbox. Usa always_ask su bash se inoltri testo dell'utente finaleIl valore predefinito del toolset dell'agente è always_allow, che esegue ogni chiamata senza approvazione
web_fetchautoUn URL recuperato dall'agente può trasportare dati verso il sito a cui punta
web_searchalways_ask se l'agente gestisce dati che non vorresti inviare in una query di ricerca. Altrimenti always_allowallowed_domains limita i siti da cui provengono i risultati, non il contenuto della query
Strumenti MCP che leggono solo datiauto, impostato per ogni strumento nei configs del toolsetIl valore predefinito del toolset resta always_ask, quindi uno strumento aggiunto in seguito dal server MCP attende comunque l'approvazione
Strumenti MCP che modificano datialways_askÈ il valore predefinito del toolset MCP. Mantienilo
Strumenti personalizzatiIl tuo codice decide se ogni chiamata viene eseguitaLe policy di autorizzazione non si applicano

Il toolset in Dai all'agente il set di strumenti più ridotto applica queste policy.

La policy auto consente al server di eseguire una chiamata, negarla o mettersi in pausa in attesa di approvazione. Una persona non può approvare ogni chiamata in un'esecuzione lunga, quindi è il server a controllarle una per una. Abbina auto a un networking limitato, a una chiave con permessi ristretti, a un budget e a un avviso sulle sessioni inattive. auto non è un punto di controllo umano, quindi se una persona deve rivedere le chiamate a uno strumento prima che vengano eseguite, configura always_ask su quello strumento.

auto tratta il testo negli eventi user.message e la descrizione in un evento user.define_outcome come tue istruzioni, incluso il testo dell'utente finale che inoltri.

Una sessione in pausa attende indefinitamente, quindi una sessione non presidiata ha bisogno di un client che risponda alle chiamate in pausa o interrompa la sessione.

Rivedi ogni chiamata in pausa prima di consentirla. Un client che consente ogni chiamata senza mostrarla a una persona equivale a always_allow. Consulta Rispondere alle richieste di conferma e Vedere come è stata valutata ogni chiamata.

Dai all'agente il set di strumenti più ridotto

Imposta default_config.enabled su false e abilita solo gli strumenti di cui l'agente ha bisogno. Il toolset dell'agente abilita per impostazione predefinita tutti e otto gli strumenti integrati.

StrumentoCosa fa
bashEsegue qualsiasi comando, incluse le richieste agli host consentiti
write, editModificano file nella sandbox
read, glob, grepLeggono file nella sandbox
web_fetch, web_searchRestituiscono pagine e risultati di ricerca dal web, tramite i server di Anthropic

L'agente di supporto ha bisogno di tre strumenti integrati: read e write per la sua bozza, e web_fetch per il centro assistenza. Cerca gli ordini tramite uno strumento personalizzato, lookup_order, eseguito dalla tua applicazione. La chiave API per la tua API degli ordini è detenuta dalla tua applicazione, quindi l'agente non ha bisogno né di bash né di una credenziale.

L'esempio seguente limita web_fetch a help.example.com con allowed_domains. Imposta auto su write e web_fetch, come raccomandato in Approva le azioni rischiose. Se il ticket di un cliente induce l'agente a usare questi strumenti, l'agente può solo modificare file nella sandbox o aprire pagine del centro assistenza. Ecco perché nessuno dei due strumenti ha bisogno di always_ask. L'esempio imposta anche always_ask in default_config, così uno strumento che abiliti in seguito senza una propria policy usa always_ask:

ant apply agent.md
agent.md
---
name: Support Agent
model: claude-opus-5-5
tools:
  - type: agent_toolset_20260401
    default_config:
      enabled: false
      permission_policy:
        type: always_ask
    configs:
      - name: read
        enabled: true
        permission_policy:
          type: always_allow
      - name: write
        enabled: true
        permission_policy:
          type: auto
      - name: web_fetch
        enabled: true
        allowed_domains: [help.example.com]
        permission_policy:
          type: auto
  - type: custom
    name: lookup_order
    description: Look up one order by its ID. Returns the status, the items, and the delivery date.
    input_schema:
      type: object
      properties:
        order_id:
          type: string
          description: The order ID from the ticket
      required:
        - order_id
---

Un aggiornamento dell'agente sostituisce l'intero array tools, quindi invia ogni voce che vuoi mantenere.

Un aggiornamento dell'agente raggiunge solo le nuove sessioni, quindi controlla anche i deployment, gli agenti che elencano questo agente e le sessioni esistenti:

  • Un deployment fissa una versione dell'agente, quindi fai puntare ogni deployment alla nuova versione.
  • Un agente che elenca questo in subagents.predefined_agents o in workflows.predefined_agents mantiene la versione che ha fissato, quindi aggiorna anche quell'agente.
  • Per rendere più restrittiva una sessione già esistente, aggiorna gli strumenti di quella sessione. La sessione deve essere idle, e l'aggiornamento sostituisce l'intero array tools. In una sessione multiagente, i nuovi elenchi allowed_domains e blocked_domains sugli strumenti web dell'agente eseguito dalla sessione si applicano anche a tutti gli altri agenti. Si applicano a partire dal turno successivo di ciascun agente. Gli strumenti abilitati e le policy di autorizzazione di quegli agenti non cambiano. Per modificarli, aggiorna ciascun agente, quindi avvia una nuova sessione.

Limita anche i server MCP e gli strumenti personalizzati a ciò di cui l'agente ha bisogno:

  • Server MCP: Un toolset MCP abilita per impostazione predefinita ogni strumento esposto dal server. Imposta default_config.enabled su false e abilita gli strumenti per nome, così gli strumenti aggiunti in seguito da un server restano disattivati. Rimuovi i server che l'agente non usa. Consulta Connettore MCP.
  • Strumenti personalizzati: Li esegue la tua applicazione, e le policy di autorizzazione non si applicano. Convalida l'input di ogni chiamata nella tua applicazione e limita ciò che lo strumento può toccare.

Tieni l'input non attendibile lontano dagli strumenti potenti

Controlla quali strumenti e credenziali possiede un agente ogni volta che legge input non attendibile, ovvero testo che qualcuno al di fuori del tuo team può scrivere. Questa sezione usa due termini:

  • Input non attendibile: Pagine web, risultati di ricerca, ticket di supporto, email, file di repository, caricamenti, risultati di server MCP e messaggi dell'utente finale che inoltri.
  • Strumenti potenti: bash, write, edit, web_fetch, web_search, strumenti MCP e strumenti personalizzati che scrivono o inviano dati, e qualsiasi strumento che usa una credenziale.

Il testo in un input non attendibile può indicare all'agente di usare uno strumento potente che possiede. L'agente di supporto legge i ticket, quindi raggiunge la tua API degli ordini solo tramite lo strumento personalizzato lookup_order. La tua applicazione verifica che l'ordine appartenga al mittente del ticket.

Input letto dall'agentePotere che ha ancheCosa fare
Ticket, email o caricamentibash con una credenzialeSostituisci bash con uno strumento personalizzato che fa una sola cosa. Se l'agente deve mantenere bash, approva ogni chiamata con always_ask
Pagine web o risultati di ricercaScrittura di file o modifica di recordDisattiva gli strumenti web, oppure limitali a siti che gestisci o di cui ti fidi
Risultati MCP o file di repositoryStrumenti MCP che scrivonoMantieni il toolset MCP su always_ask e abilita solo gli strumenti di cui l'agente ha bisogno
Un repository GitHub montatoQualsiasi strumentoMonta solo repository di cui ti fidi. Un agente con read carica le skill dalla directory .claude/skills del repository come istruzioni per l'agente, senza alcuna fase di revisione. Consulta Carica skill da un repository GitHub
Qualsiasi input non attendibileScrittura in un memory storeCollega lo store come read_only a meno che l'agente non debba scrivere. Il valore predefinito è read_write, e le sessioni successive leggono il testo salvato come memoria attendibile

In un ambiente cloud, la lettura di un file con read può anche caricare i file CLAUDE.md e AGENTS.md come istruzioni. Vengono caricati dalla directory del file e dalle sue directory padre, fino alla directory di lavoro della sandbox. Vengono caricati anche i file a cui fanno riferimento con @ e un percorso, come @docs/setup.md, fino a cinque livelli di riferimento. Un riferimento può puntare a qualsiasi punto della sandbox, ad esempio @/etc/hosts. Nessuna impostazione disattiva questo comportamento tranne la disabilitazione di read, quindi tratta come input non attendibile un repository, un pacchetto o un archivio che qualcuno al di fuori del tuo team può scrivere.

Quando un agente deve leggere input non attendibile e anche agire, questa guida raccomanda uno di tre design:

  • Separa la lettura dall'azione. In una sessione multiagente, un agente principale assegna compiti a un fetcher, che legge il web, e a un writer, che modifica file o record.
  • Dai all'agente un unico strumento personalizzato ristretto. La tua applicazione esegue lo strumento, ne controlla l'input e detiene la credenziale. L'agente di supporto usa questo design, non la separazione. Consulta Rispondere alle chiamate agli strumenti che mettono in pausa la sessione.
  • Mantieni una persona nel ciclo. Usa always_ask sullo strumento potente in modo che una persona approvi ogni chiamata.

La separazione usa tre agenti:

AgenteLeggePossiedeTrasmette
Principale (l'agente eseguito dalla sessione)Il tuo messaggio e ciò che gli altri agenti restituisconoNessuno strumento integrato. Il suo elenco subagents.predefined_agents indica il fetcher e il writerUn compito a ciascun agente
FetcherPagine web e risultati di ricercaSolo web_fetch e web_search, ciascuno con allowed_domainsRisultati brevi, in un formato che richiedi nel suo prompt di sistema
WriterIl compito dall'agente principaleGli strumenti che scrivono file, eseguono comandi o modificano record, su auto o always_ask. Nessuno strumento webIl suo risultato

I risultati del fetcher sono costruiti a partire da pagine non attendibili, e l'agente principale può trasmetterne il testo al writer. Mantieni auto o always_ask sugli strumenti del writer. Il fetcher può comunque inviare parte di ciò che legge ai siti del suo elenco web_fetch, e al provider di ricerca nelle sue query.

Gli agenti in una sessione multiagente condividono la sandbox, i suoi file e le credenziali del vault, quindi questa separazione divide solo i loro strumenti e le loro conversazioni. Per una separazione più forte, usa due sessioni con ambienti e vault separati. Fai in modo che la tua applicazione trasmetta tra le due sessioni solo campi fissi, come un ID ordine.

Imposta limiti e un modo per fermare l'agente

Imposta un budget quando crei ogni sessione e decidi in anticipo come fermare un agente.

ControlloCosa fa
Budget della sessioneUn tetto alla spesa ai prezzi di listino pubblici. Al raggiungimento del tetto, la sessione e ogni thread vanno in pausa. Le richieste in corso possono terminare e le loro chiamate agli strumenti vengono comunque eseguite, quindi la spesa può superare il tetto. Consulta Quando una sessione raggiunge il proprio budget
Budget del deploymentLo stesso tetto, applicato a ogni sessione avviata da un deployment
Evento user.interruptFerma immediatamente la risposta del modello. Una chiamata a uno strumento in esecuzione può terminare prima. La sessione passa a idle, a meno che un'esecuzione di workflow non la mantenga running, e riprende al tuo messaggio successivo. Un'interruzione non termina alcuna esecuzione di workflow
Archiviare o eliminare una sessioneL'archiviazione conserva la cronologia e blocca i nuovi eventi. L'eliminazione rimuove il record, gli eventi e la sandbox
Mettere in pausa o archiviare un deploymentLa pausa ferma le nuove esecuzioni pianificate ma consente ancora le esecuzioni manuali. L'archiviazione termina la pianificazione in modo permanente. Le sessioni già in esecuzione continuano a essere eseguite
Archiviare o eliminare un vault o una credenzialeRimuove il segreto dalle sessioni in esecuzione senza un riavvio. Prevedi un ritardo. Le sessioni continuano a essere eseguite, quindi interrompi anche quelle. Un token che l'agente ha già recuperato con il segreto resta nella sandbox

Per fermare un agente in esecuzione, segui questi passaggi:

  1. Invia user.interrupt da solo.
  2. Per un agente pianificato, metti anche in pausa il deployment in modo che non venga avviata alcuna nuova esecuzione pianificata. Per terminare la pianificazione in modo permanente, archivia il deployment.
  3. Se una chiave potrebbe essere esposta, ruotala presso il servizio che l'ha emessa.
  4. Se l'agente ha esecuzioni di workflow aperte, invia anche un user.message che gli chieda di fermarle, perché un'interruzione non termina alcuna esecuzione. Consulta Interrompere una sessione con esecuzioni aperte per le chiamate agli strumenti da annullare prima.
  5. Attendi che la sessione passi a idle. Una sessione in esecuzione non può essere archiviata né eliminata.
  6. Archivia la sessione per conservarne la cronologia. Eliminala quando la cronologia non ti serve più.

Un'interruzione non annulla ciò che l'agente ha già fatto o inviato. L'archiviazione di un agente non ferma le sue sessioni in esecuzione.

Il valore max_list_cost.amount di un budget è un numero intero di centesimi di dollaro USA scritto come stringa, quindi "125" significa $1,25. Consulta Imposta un budget alla creazione della sessione.

Non puoi aggiungere un budget a una sessione creata senza. Per modificare o rimuovere un tetto, consulta Riprendi una sessione che ha raggiunto il budget. Dopo aver rimosso il tetto di una sessione, non puoi impostarne uno nuovo.

Un budget limita la spesa, ma non limita ciò che l'agente fa prima di raggiungere il tetto. Per tenere separati carichi di lavoro con livelli di attendibilità diversi, usa workspace separati. Assegna a ogni carico di lavoro una chiave API limitata a un solo workspace, perché una chiave che può raggiungere più workspace può agire in ognuno di essi.

Consulta Budget di sessione, Operazioni sulle sessioni e Deployment pianificati.

Passaggi successivi

Modalità di networking, host consentiti e gestori di pacchetti.

Policy di approvazione e richieste di conferma.

Tipi di credenziali, posizioni di iniezione e rotazione.

Tetti di spesa, ripresa al raggiungimento del budget e budget sui deployment.

Was this page helpful?