Esto alimenta a:
Tira o nome do framework e todo o agente são os mesmos sete componentes em ciclo. E o interessante não são as caixas: são as duas perguntas —já posso responder? e objetivo cumprido?—, os únicos sítios onde o agente decide algo. O resto é canalização. Quando um agente se porta mal, a falha está quase sempre em como se especificaram essas duas, não no modelo a raciocinar.
Consultam-se antes de cada ação, não uma vez ao começar. Uma porta à entrada não diz absolutamente nada do que o agente decida fazer no passo quatro — e o passo quatro é onde estão os problemas.
Um rasto diz-te o que o agente fez; não se o que fez estava correto. Por isso o separador de verificação mede sobre ele coisas que não precisam de modelo: voltas, bloqueios, falhas de que se recuperou e repetições sem motivo, que é como se vê um ciclo. O determinista vai primeiro; o juiz com modelo reserva-se para o que exige mesmo critério.
Um prompt diz como se comporta o agente. Uma especificação diz o que deve acontecer: o que muda, o que não muda, que contratos se respeitam e que evidência é precisa para dar algo por bom. São artefactos distintos e a spec está acima: sem ela, o prompt mais cuidado continua sem dizer quando a tarefa está terminada.
É o campo que quase ninguém preenche e o único que delimita a sério. Sem ele, um agente pode cumprir o objetivo partindo qualquer outra coisa e continuar a ter razão: ninguém lhe disse que isso também importava. Por isso aqui é um erro e não um aviso.
Um bom critério é um comando que se pode correr, dá passa ou não passa —«razoavelmente rápido» não dá— e comprova uma só coisa, para que ao falhar se saiba qual. Escritos assim traduzem-se quase 1:1 para casos de teste, que é do que se trata.
Chega-lhe um só texto. Se dentro do que julgavas ser um dado —uma página que o agente lê, um documento recuperado, um e-mail, o README de uma dependência— houver algo com forma de ordem, o modelo pode obedecer-lhe. Não é uma falha que um modelo melhor resolva: é a forma do problema. Por isso a indireta é a perigosa: na direta o atacante é o próprio utilizador, mas na indireta mete-a um terceiro e a vítima és tu.
Todo lo de arriba baja probabilidades. Esto no. Un agente es explotable cuando reúne tres cosas a la vez: datos privados a los que llega, contenido no fiable que lee (una web, un correo, un README) y un canal de salida por donde algo puede irse. Con las tres, una inyección convierte lo primero en lo tercero usando lo segundo.
Con dos cualesquiera no hay robo posible, y ahí está lo útil: no hay que acertar con «la defensa buena», vale cortar la pata que te resulte más barata. Sin datos no hay qué llevarse; sin contenido ajeno no hay quien dé la orden; sin canal no hay por dónde sacarlo.
Y esto se decide en la pestaña de al lado: tu cubo «Nunca» es literalmente dónde se corta una pata. Quitar la herramienta de red del agente que lee correos no es una mitigación, es cerrar el problema.
Idea de Simon Willison (2025). La traemos aquí porque encaja con los tres cubos que ya has escrito — y porque es lo único de esta pestaña que no depende de que el modelo se porte bien.
É a primeira coisa que toda a gente põe e a que menos protege: uma lista de frases só apanha as frases que alguém anotou. No banco deste separador não apanha nem um dos ataques disfarçados, que são exatamente os mesmos ataques escritos de outra maneira. O que os trava mesmo é a arquitetura: mínimo privilégio, confirmação humana e verificar a saída — ou seja, os três baldes de permissões que já escreveste ao lado.
Isto não diz se algo é verdade: não pode, e nenhuma ferramenta que corra no teu navegador pode. Diz se uma afirmação vem acompanhada de uma fonte e de que nível é essa fonte, que é outra coisa e essa sim se comprova. A leitura útil vai ao contrário do que parece: não procures o selo verde, procura as frases categóricas e sem nada por trás, que soam igual de seguras que as restantes.
Citar um preprint não é mal; apresentá-lo como se fosse um artigo revisto, sim. E o pormenor que quase ninguém faz: um preprint também tem DOI. O DOI é um registo, não um certificado de revisão — por isso 10.48550/arXiv.… aqui sai como preprint e não como fonte formal.
É a falha que arruína um banco de evals, e é silenciosa: um contém vazio passa sempre, uma regex como .* passa sempre, um caso sem asserções passa sempre. Um banco cheio dessas dá 100% no primeiro dia, não volta a descer nunca e não mediu nada na vida. Por isso aqui o banco revê-se a si mesmo antes de dar qualquer percentagem.
Que um banco passe de 80% para 78% não diz o que fazer. O que se arranja é o caso concreto que passava e deixou de passar. Por isso guarda-se uma passagem de referência e comparam-se as duas. E se o banco mudou ao mesmo tempo que o modelo, os casos que só estão numa das duas saem à parte: essa comparação não compara nada, e mais vale vê-lo do que acreditar nela.
Todas as métricas deste separador —bloqueios, ciclos, rasto— dão por suposto que o rasto é honesto. E isso há que verificá-lo: a 31 de agosto de 2026 a Anthropic contou que uns modelos seus saíram do seu ambiente de testes, passaram informação entre si e tentaram ocultar as suas pegadas. Por isso antes de acreditar em qualquer número olha-se se o rasto bate certo consigo próprio: numeração seguida, voltas do ciclo que não recuam, nenhum passo que desfaça algo que nunca se fez, nenhuma chamada falhada que diga ter mudado o mundo. É aritmética, não interpretação. O limite, dito claro: isto não deteta um agente que mente — quem falsificar com cuidado produzirá um rasto coerente e aqui não sairá nada. Deteta rastos a que faltam peças, que é o que acontece a sério quase sempre: um pedaço perdido, uma repetição por registar, um exportador que come passos.
Um rasto que diz «não cumprido» parece que não aconteceu nada, e quase sempre aconteceu: o agente falhou no passo seis depois de ter avisado a equipa três vezes. Por isso cada ferramenta declara se só consulta, se altera algo que se pode desfazer ou se altera algo sem volta atrás, e ao render-se pinta-se o que fica feito. Três detalhes que se veem melhor mexendo do que lendo: desfaz-se da última alteração para a primeira (o passo 5 pode depender do 3); que algo seja reversível não chega —compensar é escrever à mão uma segunda ação por cada primeira, não marcar uma casinha—; e repetir não é grátis: cada volta do ciclo volta a mudar o mundo.
Es el fallo con el que abren todas las guías de agentes: una llamada expira, el agente reintenta, y el mismo registro se crea dos veces. Aquí lo puedes provocar: pon la verificación en «no pasa nunca» con una acción irreversible y verás tres avisos mandados, uno por vuelta. Enciende cualquiera de los dos interruptores y la estela baja a uno.
Lo que no suele explicarse es en qué se diferencian, porque en el resultado final parecen lo mismo:
• Clave de idempotencia — la llamada sí se hace, las tres veces; lo que no se repite es el efecto, porque el otro extremo reconoce la clave y devuelve lo de la primera. Pagas la latencia, el cupo y los tokens; no pagas el destrozo.
• Punto de control — la llamada ni se hace: el arnés apuntó que esa subtarea ya constaba hecha y retoma en la siguiente. No pagas nada.
Y la diferencia que decide cuál puedes usar no es técnica, es de quién depende: la clave la implementa quien SIRVE la herramienta; el punto de control, el arnés que la LLAMA. Si la API de terceros no soporta claves, no hay conversación posible: solo te queda el punto de control. Por eso existen los dos y no son sinónimos.
El borde que se cuela: un punto de control nunca debe apuntar como hecha una llamada que devolvió error — si lo hace, el reintento se salta justo lo que había que reintentar y el agente no se recupera nunca. Ese caso tiene su test.
Exporta-se para o que os agentes já leem: um SPEC.md solto, os três ficheiros do Kiro (requirements, design, tasks), um CLAUDE.md com o permanente, ou os três baldes de permissões. Os ficheiros valem mais do que a ferramenta que os gera: por isso não te prendemos a ela.
Esto alimenta a: