top of page

I guardrail per coding agent di Tessl trasformano i file del repository in un livello di controllo

24 ore fa
Tempo di lettura: 14 min

Tessl ha pubblicato un framework in quattro parti per controllare i coding agent attraverso file di proprietà dei team, nonostante la crescente dipendenza da modelli ospitati. I guardrail per coding agent di Tessl separano istruzioni persistenti, regole specifiche per percorso, capacità riutilizzabili e hook automatici. Questa distinzione conta perché una richiesta scritta e una restrizione applicata non offrono la stessa protezione.

Il framework usa CLAUDE.md, .claude/rules/, file di capacità in .claude/ e hook collegati tramite la configurazione di Claude Code. Ogni livello gestisce un punto diverso del flusso di lavoro di un agente. Insieme, spostano la conoscenza operativa dalle conversazioni temporanee alle risorse versionate del repository.

Il conflitto centrale non è Tessl contro un altro strumento per sviluppatori. È contesto consultivo contro applicazione deterministica. Un modello può fraintendere o trascurare il testo, mentre un hook può rifiutare un'azione prima che venga eseguita. I team devono ora decidere quali aspettative appartengono ai prompt e quali richiedono controlli eseguibili.

I guardrail per coding agent di Tessl dividono un prompt in quattro livelli

La mossa chiave di Tessl consiste nel separare le indicazioni in base a quando vengono caricate, a ciò che controllano e alla possibilità che l'agente le ignori.

Il framework a quattro file inizia con CLAUDE.md. Questo file del repository fornisce a Claude Code un contesto persistente sul progetto. I contenuti adatti includono comandi di build, confini architetturali, convenzioni sulle directory e aspettative per i test.

Questo livello dovrebbe descrivere fatti di cui l'agente ha bisogno in molte attività. Può spiegare che un servizio usa uno specifico gestore di pacchetti o che le migrazioni del database sono solo append-only. Può inoltre identificare i comandi che stabiliscono se una modifica funziona.

Il secondo livello colloca regole mirate in .claude/rules/. Una regola può includere modelli di percorso che determinano quando le sue istruzioni entrano nel contesto attivo. Una policy di convalida delle API può comparire, per esempio, solo quando l'agente interviene sugli handler API.

La delimitazione per percorso risolve un problema pratico dei file di istruzioni di grandi dimensioni. Un agente che lavora sulla documentazione non ha bisogno di tutte le convenzioni del backend nel proprio contesto. Caricare materiale irrilevante consuma token e compete con le istruzioni che contano per l'attività corrente.

Il terzo livello memorizza capacità riutilizzabili in .claude/. Le skill sono cartelle che contengono un file SKILL.md, istruzioni, script e risorse di supporto. Racchiudono una procedura che l'agente o lo sviluppatore può richiamare quando pertinente.

Una checklist di rilascio illustra la differenza. La panoramica del repository può indicare come funzionano i rilasci, ma la sequenza completa appartiene a una skill di rilascio. Questo mantiene la procedura più lunga fuori dalle normali sessioni di coding.

Il quarto livello usa hook per le azioni che dovrebbero attivarsi in eventi definiti del ciclo di vita. Gli hook possono ispezionare chiamate a strumenti proposte, eseguire formattatori dopo le modifiche o fermare comandi pericolosi. La loro configurazione risiede normalmente nelle impostazioni o nei file di progetto correlati.

Questa separazione cambia il significato di “istruzioni per agenti”. I file non formano più un unico grande prompt che chiede al modello di ricordare tutto. Diventano controlli distinti con diversi comportamenti di caricamento e applicazione.

Anche le linee guida sul controllo di Anthropic supportano questa ripartizione. Distinguono tra contesto sempre caricato, regole delimitate per percorso, procedure on-demand, subagenti isolati e automazione del ciclo di vita.

Tessl restringe questo menu più ampio a un argomento sulla proprietà del repository. Il fornitore del modello continua a gestire il modello e il runtime dell'agente. Il team di sviluppo possiede i file che descrivono come l'agente dovrebbe comportarsi all'interno della propria codebase.

Questa proprietà rende il livello di controllo ispezionabile. Un team può revisionare le modifiche tramite pull request, confrontare versioni, assegnare responsabili e annullare una regola dannosa. La cronologia delle chat raramente offre la stessa chiarezza operativa.

I file possono anche viaggiare insieme al progetto. Un nuovo collaboratore riceve le convenzioni condivise clonando il repository. Una nuova sessione dell'agente può recuperare le stesse istruzioni senza dipendere dalla conversazione precedente di qualcuno.

Il framework non elimina l'incertezza del modello. Organizza l'incertezza in livelli che i team possono testare in modo indipendente. Questo è il cambiamento più importante.

La pressione ricade sui team che trattano CLAUDE.md come un motore di policy

Un lungo file di istruzioni può guidare un agente, ma non può funzionare in modo affidabile come sistema di controllo degli accessi.

Molti team iniziano con un unico CLAUDE.md perché produce miglioramenti immediati. L'agente smette di indovinare i comandi comuni, segue schemi di denominazione consolidati e acquisisce una mappa di base del repository. Questi vantaggi rendono facile estendere eccessivamente il file.

Il problema emerge quando ogni eccezione diventa un altro paragrafo. Requisiti di sicurezza, procedure di rilascio, convenzioni frontend, restrizioni sul database e preferenze personali si accumulano nello stesso documento. Ogni sessione paga quindi il costo di contesto.

Anthropic raccomanda di trattare il file principale come una panoramica o un indice. Le sue linee guida attuali suggeriscono di mantenere CLAUDE.md sotto le 200 righe, assegnargli un responsabile e revisionare le modifiche come codice. Questa raccomandazione riflette un problema di attenzione, non una semplice preferenza di formattazione.

Ogni istruzione sempre caricata compete con file sorgente, dettagli dell'attività, output degli strumenti e conversazione recente. Più indicazioni non garantiscono una conformità più forte. Un prompt affollato può rendere più difficile identificare il requisito pertinente.

I file di istruzioni annidati aiutano a localizzare parte della conoscenza. Secondo la documentazione ufficiale sulla memoria di progetto, i file sotto la directory di lavoro possono essere caricati quando Claude accede a quella parte dell'albero. Questo supporta convenzioni specifiche del team all'interno di un monorepo.

Le regole delimitate per percorso offrono un'opzione più diretta per le questioni trasversali. Una regola può mirare a diversi modelli di file senza duplicare le istruzioni in più directory. Può coprire tutti i file di migrazione o ogni handler API in pacchetti separati.

Questa distinzione mette sotto pressione i responsabili dell'ingegneria affinché classifichino i propri requisiti. Una convenzione di coding appartiene al contesto perché il giudizio resta utile. Un flusso di lavoro ripetibile appartiene a una skill perché richiede passaggi ordinati. Un comando vietato necessita di una barriera più forte.

Senza questa classificazione, CLAUDE.md diventa un database informale di policy. Gli sviluppatori possono presumere che scrivere “non modificare mai la configurazione di produzione” crei un confine affidabile. Non è così.

Un agente interpreta il testo all'interno di un contesto in evoluzione. Sessioni lunghe, istruzioni ambigue, file in conflitto e prompt injection possono indebolire l'aderenza. Anche un modello capace può formulare il giudizio sbagliato in queste condizioni.

Questa limitazione influisce anche sugli audit. Un revisore può confermare che una frase esiste, ma non può dedurne il reale tasso di applicazione. La regola può caricarsi correttamente e perdere comunque contro un'istruzione più immediata.

I team che adottano flussi di lavoro autonomi o non supervisionati affrontano la maggiore pressione. Una convenzione mancata durante il coding supervisionato crea lavoro di revisione. Una restrizione di sicurezza mancata durante l'esecuzione non supervisionata può modificare file, esporre dati o invocare un comando indesiderato.

Il framework chiede quindi ai team di smettere di misurare la governance in base alla dimensione del documento. La domanda migliore è se ciascun requisito raggiunga l'agente nel momento giusto con autorità sufficiente.

Questa domanda va oltre Claude Code. Altri coding agent supportano file di istruzioni del repository, flussi di lavoro riutilizzabili o controlli basati su eventi con nomi diversi. I percorsi specifici variano, ma il problema di progettazione rimane coerente.

Un repository necessita di contesto conciso, procedure selettive, permessi limitati e confini applicabili. Combinare queste funzioni in un solo prompt ne nasconde le differenze.

Le istruzioni consultive e gli hook deterministici non sono equivalenti

Il confine decisivo è se il modello scelga di conformarsi o se il runtime blocchi la non conformità.

Un'istruzione in CLAUDE.md influenza la decisione successiva del modello. Un file di regole fa lo stesso con un targeting migliore. Una skill fornisce una procedura riutilizzabile, ma l'agente continua a interpretare ed eseguire tale procedura.

Gli hook operano a un altro livello. Claude Code li attiva quando si verificano eventi definiti, come una richiesta di strumento, una modifica a un file, l'avvio di una sessione o un tentativo di completamento. Il runtime avvia l'hook invece di attendere che il modello se ne ricordi.

Un hook PreToolUse può ispezionare un comando proposto prima dell'esecuzione. Se il comando viola una policy, un command hook può restituire un risultato di blocco. L'agente riceve quindi la motivazione e deve scegliere un altro percorso.

La guida ufficiale agli hook descrive diversi tipi di handler. Gli handler di comando eseguono script, mentre gli handler prompt e agent usano il giudizio del modello. Questa distinzione conta perché non ogni hook è completamente deterministico.

Un hook che si avvia sempre è deterministico a livello di attivazione. La sua decisione può comunque essere probabilistica se una LLM valuta la richiesta. I team dovrebbero riservare i controlli basati su comandi a condizioni che il software può valutare direttamente.

Si consideri un repository che vieta modifiche ai file generati. Un'istruzione testuale dice all'agente di evitarli. Una regola per percorso ripete tale aspettativa quando appaiono file pertinenti. Un hook può ispezionare la destinazione di scrittura e rifiutare l'operazione.

Questi livelli possono lavorare insieme. L'istruzione spiega la progettazione del repository, mentre l'hook previene una modalità di errore nota. L'agente riceve sia il contesto sia un confine applicabile.

Lo stesso schema si applica ai comandi. Un team può descrivere il proprio processo di deployment in una skill, quindi bloccare i comandi diretti di produzione tramite permessi o hook. La skill fornisce il percorso approvato, mentre il controllo impedisce scorciatoie.

Gli hook post-modifica hanno uno scopo diverso. Possono eseguire formattazione, linting o convalida mirata dopo che un agente modifica un file. Questa automazione riduce la dipendenza dal fatto che l'agente ricordi un altro elemento della checklist.

Gli hook di completamento possono verificare che i controlli richiesti siano stati superati prima che l'agente si fermi. Tuttavia, necessitano di protezione dai cicli. Un hook di arresto non riuscito che chiede ripetutamente all'agente di continuare può consumare tempo senza migliorare il risultato.

Gli hook introducono inoltre codice eseguibile nel piano di controllo. Uno script difettoso può bloccare lavoro legittimo, far trapelare informazioni o aggiungere latenza a ogni evento corrispondente. I team devono revisionare le modifiche agli hook con la stessa cura riservata all'automazione di build e deployment.

La proprietà non crea automaticamente sicurezza. Un repository dannoso può contenere configurazioni che richiedono comportamenti pericolosi. Gli sviluppatori necessitano comunque di fiducia nel workspace, permessi restrittivi, revisione del codice ed esecuzione isolata per progetti non familiari.

L'espressione “file di tua proprietà” ha quindi due significati. Descrive portabilità e governance, ma assegna anche responsabilità. Il team deve mantenere questi file, testarne gli effetti e proteggerli da modifiche non autorizzate.

Ecco perché i permessi restano importanti. I controlli dei permessi di Anthropic supportano regole di autorizzazione e negazione per strumenti e comandi. Le regole di negazione hanno la precedenza sulle regole di autorizzazione corrispondenti.

Gli hook possono valutare condizioni più ricche, mentre i permessi forniscono un confine di accesso più diretto. Nessuno dei due dovrebbe sostituire l'isolamento del sistema operativo quando le conseguenze sono gravi.

Container, credenziali con restrizioni, protezioni dei branch e mount in sola lettura restano controlli più forti. I file del repository rientrano in questo sistema difensivo più ampio. Dovrebbero ridurre il rischio senza fingere di sostituire la sicurezza dell'infrastruttura.

Il punto principale è semplice. Se un requisito dice “preferire”, può restare una linea guida. Se dice “non deve mai”, il team dovrebbe cercare un controllo applicabile in modo vincolante.

Le Skills Trasformano il Lavoro Ripetuto degli Agenti in Asset di Repository Verificabili

Le skills sono importanti perché trasformano abitudini temporanee di prompting in procedure che i team possono ispezionare, testare e riutilizzare.

Uno sviluppatore scopre spesso un flusso di lavoro utile con gli agenti attraverso tentativi ed errori. Il prompt finale può includere comandi diagnostici, criteri decisionali, requisiti di formattazione e passaggi di verifica. Senza un file condiviso, questa conoscenza scompare all'interno di una singola conversazione.

Una skill preserva il flusso di lavoro in una directory con nome. Il suo SKILL.md contiene metadati e istruzioni, mentre script o riferimenti adiacenti supportano la procedura. Il repository può versionare il pacchetto completo.

Claude Code carica inizialmente solo il nome e la descrizione di una skill. Il contenuto completo entra nel contesto quando la skill diventa pertinente o qualcuno la invoca. La documentazione ufficiale delle skill presenta questo comportamento come alternativa all'inserimento di procedure lunghe in CLAUDE.md.

Questo modello di caricamento crea un vantaggio in termini di economia del contesto. Procedure dettagliate per rilasci, migrazioni, revisioni e incidenti possono rimanere disponibili senza gravare su ogni sessione. Il contesto diventa condizionale anziché permanente.

Migliora anche la reperibilità. Un nuovo ingegnere può ispezionare la directory delle skills e vedere quali flussi di lavoro il team ha formalizzato. I file rivelano ciò che l'organizzazione si aspetta sia dagli esseri umani sia dagli agenti.

La verificabilità è altrettanto importante. Un prompt modificato in chat è difficile da sottoporre ad audit. Una skill modificata produce un diff. I revisori possono individuare un controllo di sicurezza rimosso o un comando aggiunto prima che entri nell'uso ordinario.

Le skills possono includere script per sottoattività deterministiche. Una skill di migrazione potrebbe chiamare un validatore di proprietà del repository invece di chiedere al modello di riprodurre la logica di validazione. L'agente gestisce il giudizio, mentre il codice gestisce il calcolo ripetibile.

Tuttavia, una skill resta soprattutto una procedura. La sua presenza non dimostra che l'agente la invocherà al momento giusto. Le descrizioni devono indicare chiaramente quando la skill si applica e i team necessitano di test che esercitino il comportamento di attivazione.

L'invocazione manuale può ridurre l'ambiguità per le operazioni sensibili. Uno sviluppatore può richiedere esplicitamente una revisione del rilascio invece di dipendere dalla corrispondenza automatica. La skill fornisce quindi un flusso di lavoro coerente.

Le capacità creano anche obblighi di manutenzione. Le procedure diventano obsolete quando cambiano i nomi dei comandi, le architetture o i sistemi di deployment. Una skill affidabile necessita di un responsabile, esempi e un ciclo di revisione.

I team dovrebbero prestare attenzione all'autorità duplicata. Se lo stesso requisito compare in CLAUDE.md, in tre regole e in due skills, modifiche successive possono creare contraddizioni. L'agente riceve quindi più versioni della presunta verità.

Una disposizione migliore assegna a ogni fatto una sede primaria. Il file root può rimandare a una capacità senza copiarne il contenuto completo. Le regole di percorso possono aggiungere vincoli locali, mentre le skills possiedono procedure in più passaggi.

Questo ricorda l'ordinaria progettazione software. Piccoli moduli con responsabilità chiare restano più facili da modificare rispetto a un unico oggetto di configurazione globale. Il livello di controllo degli agenti beneficia della stessa separazione.

L'approccio può anche preservare la conoscenza organizzativa. Il recupero delle build, gli aggiornamenti delle dipendenze e le revisioni di sicurezza dipendono spesso da pochi ingegneri esperti. Codificare questi flussi di lavoro rende tale conoscenza disponibile nelle sessioni future.

Questo collegamento è particolarmente rilevante quando le evidenze tecniche sono disperse tra documenti. Una base di conoscenza ingegneristica ricercabile può supportare il materiale sorgente, mentre le skills definiscono come gli agenti lo utilizzano.

I due sistemi risolvono problemi diversi. L'archiviazione della conoscenza preserva fatti e decisioni. Le skills trasformano conoscenze selezionate in una procedura operativa.

Il vantaggio pratico non è che l'agente diventi improvvisamente infallibile. Il vantaggio è che il team può ispezionare la procedura che si aspetta l'agente segua.

La Proprietà dei File Non Elimina il Divario di Sicurezza

Le barriere controllate dal repository migliorano la responsabilità, ma restano vulnerabili a conflitti, manomissioni e applicazione incompleta.

La prima incertezza riguarda la precedenza delle istruzioni. Un progetto può contenere indicazioni root, indicazioni annidate, regole di percorso, istruzioni delle skills, preferenze dell'utente e impostazioni organizzative gestite. Questi livelli possono essere in disaccordo.

Un team può credere che il proprio repository esprima una politica quando la configurazione personale di uno sviluppatore modifica il comportamento. Può verificarsi anche il problema opposto. Una politica centrale può impedire un flusso di lavoro locale previsto dal repository.

La visibilità della configurazione è quindi essenziale. Gli sviluppatori hanno bisogno di un modo per vedere quali file sono stati caricati, quali regole hanno trovato corrispondenza e quali autorizzazioni hanno influenzato una decisione. Altrimenti, i fallimenti appaiono casuali.

La seconda incertezza riguarda la mutabilità. Se un agente può modificare i file che lo vincolano, il piano di controllo condivide lo stesso confine di fiducia del codice ordinario. Un'attività potrebbe indebolire accidentalmente una regola mentre modifica una configurazione vicina.

I controlli critici dovrebbero ricevere una protezione più forte. Proprietà del codice, revisioni obbligatorie, branch protetti e ambienti di esecuzione in sola lettura possono rendere più difficili le modifiche non autorizzate. Gli hook sensibili non dovrebbero dipendere dalla buona volontà dell'agente.

La terza incertezza è la portabilità. CLAUDE.md gode di ampio riconoscimento, ma le directory per regole, skills, agenti e hook restano specifiche dello strumento. Un repository che supporta diversi agenti di coding può accumulare configurazioni parallele.

Tessl ha interesse a ridurre questa frammentazione perché il suo prodotto gestisce contesto e specifiche riutilizzabili per gli agenti. Il suo framework riflette quindi sia un modello di progettazione generale sia uno specifico ambiente di strumenti.

I team dovrebbero separare queste due affermazioni. Il modello a livelli è utile tra gli agenti di coding. I percorsi esatti dei file e il comportamento di caricamento devono comunque essere verificati rispetto a ciascun runtime.

La quarta incertezza riguarda la falsa fiducia. Un hook può bloccare un modello di comando noto ma non intercettare un'azione equivalente. Una regola di negazione per un comando shell non copre necessariamente uno script, un task di pacchetto o uno strumento esterno che produce lo stesso effetto.

I controlli necessitano di test avversariali. I team dovrebbero tentare operazioni vietate tramite sintassi alternative, script indiretti e strumenti diversi. Una barriera che supera solo il suo esempio originale rimane fragile.

Anche il lavoro legittimo necessita di test. Un blocco ampio può impedire comandi innocui o interrompere flussi di lavoro comuni. Gli sviluppatori potrebbero quindi chiedere eccezioni, aggirare il controllo o disabilitarlo del tutto.

La latenza crea un altro compromesso. Un formatter dopo ogni modifica può essere accettabile, mentre un'intera suite di test dopo ogni modifica ai file può rendere inutilizzabile l'agente. I controlli dovrebbero corrispondere al costo e alla conseguenza dell'evento.

I controlli rapidi dovrebbero trovarsi vicino a ogni modifica. Una validazione più ampia può essere eseguita prima dei commit o del completamento. Un'analisi di sicurezza costosa può adattarsi a una skill dedicata, a un job di integrazione continua o a un agente di revisione isolato.

Il prompt injection resta una seria preoccupazione. Un agente può leggere testo non attendibile da issue, documentazione, artefatti generati o contenuti delle dipendenze. Istruzioni dannose all'interno di questi input possono entrare in conflitto con le indicazioni del repository.

Autorizzazioni deterministiche ed esecuzione isolata riducono il danno possibile. Le istruzioni nei prompt da sole non possono stabilire un confine di sicurezza, perché lo stesso modello interpreta sia testo attendibile sia testo non attendibile.

La lettura più sicura della proposta di Tessl è quindi più circoscritta rispetto al suo titolo. I file possono creare un livello di controllo manutenibile. Non possono garantire da soli un'autonomia sicura.

Tre Segnali Mostreranno se il Framework Regge

Il prossimo test è se i team riescono a misurare aderenza, portabilità e applicazione, invece di limitarsi ad accumulare file di configurazione.

Il primo segnale è un migliore strumentario di valutazione per le istruzioni del repository. I team necessitano di attività ripetibili che rivelino se un agente ha seguito una regola, invocato la skill corretta e rispettato un confine.

Una valutazione utile dovrebbe partire da un ambiente pulito. Dovrebbe presentare lo stesso compito in più esecuzioni, registrare la configurazione caricata e confrontare le azioni risultanti. Ciò farebbe emergere fallimenti probabilistici nascosti da una singola dimostrazione riuscita.

Se la valutazione diventa ordinaria, l'argomentazione di Tessl sulla proprietà si rafforza. I file del repository si comporterebbero più come asset software testabili. Se i team non riescono a misurare gli esiti, il framework rischia di diventare documentazione di prompt dagli effetti incerti.

Il secondo segnale è la convergenza attorno a formati portabili per le capacità. Le skills assomigliano già a uno standard di packaging trasversale agli strumenti perché combinano metadati, istruzioni e file di supporto. Regole e hook restano meno coerenti.

La portabilità ridurrebbe la manutenzione duplicata tra Claude Code, Codex, Cursor e altri agenti. Consentirebbe inoltre alle organizzazioni di revisionare una definizione di controllo anziché riconciliare diverse quasi-copie.

Tuttavia, una portabilità superficiale non è sufficiente. Un formato di file condiviso deve preservare attivazione, autorizzazioni, corrispondenza dei percorsi e semantica di applicazione. Markdown identico non garantisce un comportamento identico.

Se i fornitori di agenti pubblicano regole precise di caricamento e precedenza, il framework diventa più facile da considerare affidabile. Se ogni runtime interpreta silenziosamente gli stessi file in modo diverso, la proprietà del repository non risolverà l'ambiguità operativa.

Il terzo segnale è una separazione più forte tra indicazioni e politica vincolante. Anthropic distingue già tra istruzioni rivolte al modello e hook, autorizzazioni, impostazioni gestite e isolamento del sistema. I team hanno ora bisogno di strumenti che rendano visibile questa distinzione.

Un'interfaccia per le policy dovrebbe identificare quali controlli sono consultivi, quali si attivano sempre e quali bloccano effettivamente le azioni. I log di audit dovrebbero mostrare perché un comando è stato consentito o negato.

Questo segnale rafforzerà il framework se gli sviluppatori potranno ricondurre ogni restrizione importante a un livello applicabile in modo vincolante. Lo indebolirà se le policy sensibili resteranno nascoste nella prosa.

L'azione immediata per i team di ingegneria non è creare tutti e quattro i livelli contemporaneamente. Dovrebbero inventariare le istruzioni esistenti e classificare ogni affermazione in base alla funzione.

I fatti del progetto e i comandi comuni appartengono a un contesto persistente conciso. Le convenzioni specifiche dei file appartengono a regole con ambito definito. Le procedure ripetute appartengono alle skills. Le azioni vietate appartengono ad autorizzazioni, hook o controlli di sistema più forti.

Questa classificazione fornisce un test pratico per le barriere degli agenti di coding di Tessl. Un altro ingegnere può ispezionare il repository e spiegare cosa guida l'agente, cosa si attiva su richiesta e cosa non può essere aggirato?

Se la risposta non è chiara, il repository non dispone ancora di un livello di controllo. Ha una raccolta di prompt. La distinzione determinerà se gli agenti di coding diventeranno collaboratori affidabili o semplicemente fonti più rapide di lavoro di revisione.

 
 

Inizia gratis

Un assistente IA local-first con gestione della conoscenza personale

Per una migliore esperienza con l’IA,

al momento remio supporta solo Windows 10+ (x64) e M-Chip Macs.

Il tuo partner AI al lavoro
Fai di più con remio

Pianifica. Crea. Consegna.
Tutto in un unico posto.

bottom of page