Where the screen fails (login, captcha, dynamic content) and when the human takes over
Some screens the agent should not go past: login, human verification, and the button that confirms an action. And there is one where it makes mistakes without noticing: content that arrives later. In this lesson, the limits task battery runs through these four cases on the kit's site, and you watch the agent stop with the exact reason instead of making things up.
1Dynamic content: wait for the proof, not the clock
2Login: the agent does not type a password
3Human verification: made for the person
4Confirmation: the person decides
Goal: recognize where the screen fails (dynamic content, login, verification, confirmation) and make the agent stop and call the person.
01 · Four screens, two answers
Click each block.
Click each block in the diagram to see what it does.
One case calls for patience; three call for the person. In none of them should the agent make up the result.
02 · Why stopping is the right result
Three reasons, one of them with a date.
1. Who answers
Confirming a booking, paying, or sending a message has consequences for someone. The action belongs to the person; the agent prepares it and shows the summary.
In lesson 4, the WebMCP tool with consequences reached the agent with the warning "Confirm with the user first". On the screen, the equivalent is stopping at the button.
2. Injection exists
Anthropic wrote on 11/24/2025 that the successful attack rate dropped to ~1% and that this "still represents meaningful risk. No browser agent is immune". A page can tell the agent to do what you did not ask for.
Stopping before anything with consequences limits the damage. Threat and defense in depth: course 4.
3. Site rule
Human verification exists to tell a person from a robot. An agent that solves it is getting around a decision made by the site's owner, even if it can.
On your own site, if the task has to get past the verification, you are the one who passes it, and the agent continues afterward.
How the kit's robot recognizes itVisible password field = login; field with a verification or captcha label = verification; visible Confirmar button = confirmation. More than 10 actions without proof = stop for budget.
03 · The limits task battery
Four tasks on the kit's site: one that finishes if it waits, three that have to stop.
Terminal · limits battery
cd ~/projetos/formacao-webmcp-navegador-v72/kit
node rodar-bateria.mjs limites.json; echo "saída: $?"
Terminal · the same one, without waiting
cd ~/projetos/formacao-webmcp-navegador-v72/kit
node rodar-bateria.mjs limites.json --espera 0; echo "saída: $?"
Example from the repository
Chromium 156.0.8078.4 (Playwright) · bateria: limites.json · site: http://127.0.0.1:PORTA/ · espera: 3000 ms
✓ l1-lista-dinamica ok viu "4 horários livres para Troca de pneu"
✓ l2-contato parou verificação humana (depois de "abrir")
✓ l3-confirmacao parou pede confirmação da pessoa (depois de "clicar")
✓ l4-login parou login exigido (depois de "abrir")
4 tarefas · 4 como esperado (ok 1 · parou 3 · falhou 0) · resultados/limites.jsonl
saída: 0
l1 saw the proof after the wait; l2, l3, and l4 stopped at the right signal, each saying after which step. Four as expected, exit 0.
Chromium 156.0.8078.4 (Playwright) · bateria: limites.json · site: http://127.0.0.1:PORTA/ · espera: 0 ms
✗ l1-lista-dinamica falhou prova "4 horários livres para Troca de pneu" não apareceu em 0 ms
✓ l2-contato parou verificação humana (depois de "abrir")
✓ l3-confirmacao parou pede confirmação da pessoa (depois de "clicar")
✓ l4-login parou login exigido (depois de "abrir")
4 tarefas · 3 como esperado (ok 0 · parou 3 · falhou 1) · resultados/limites.jsonl
saída: 1
With a 0 ms wait, l1 fails: the list hadn't arrived yet. The stops are still right, because the signal (password, verification, Confirmar) was already on the screen.
04 · Practice
The kit's limits and one from your site. Each exercise has a "done when".
E1 · Four limits
10 min
Run both blocks. For each task that stopped, write the well-reported blocker: where it stopped, what's missing, and what the person needs to do.
Done when:node rodar-bateria.mjs limites.json → 4 como esperado (ok 1 · parou 3 · falhou 0) and saída: 0; with --espera 0 → falhou 1 and saída: 1.
E2 · Your site's limit
15 min
Find a screen on your site that asks for the person (login, verification, or confirmation). Write the task that reaches it in a copy of the battery, with "espera": "parar".
Done when:node rodar-bateria.mjs limite-site.json → your task with ✓ … parou and the right reason, saída: 0.
05 · Lesson quiz
Question 1 of 4
Task l1 failed with a 0 ms wait and passed with 3000 ms. What does this teach?skill
Correct
The list arrives after the click. Waiting for the proof text, with a cap, works on fast and slow machines; fixed seconds don't.
Not that one
The list arrives after the click. Waiting for the proof text, with a cap, works on fast and slow machines; fixed seconds don't.Review: The limits task battery
Question 2 of 4
The agent reached the booking summary with the Confirmar button. What does it do?skill
Correct
An action with consequences belongs to the person. The agent prepares and stops; canceling or switching time slots would also be deciding for them.
Not that one
An action with consequences belongs to the person. The agent prepares and stops; canceling or switching time slots would also be deciding for them.Review: Four screens, two answers
Question 3 of 4
On the contact page of your own site there is a human verification. The agent's task is to send a test message.
Correct
Even on your own site, the verification is for the person. You're the one who passes it. Removing the verification changes what is being tested.
Not that one
Even on your own site, the verification is for the person. You're the one who passes it. Removing the verification changes what is being tested.Review: Why stopping is the right result
Question 4 of 4
Why does "stop before anything with consequences" also protect against prompt injection?
Correct
According to Anthropic (11/24/2025), no browser agent is immune. Stopping before the action limits the damage from an instruction planted on the page.
Not that one
According to Anthropic (11/24/2025), no browser agent is immune. Stopping before the action limits the damage from an instruction planted on the page.Review: Why stopping is the right result
Quiz complete
You got {a} of {n} right. Get them all right and the lesson is marked as complete.
Pick an option. The explanation appears after you answer.
06 · In three sentences
Dynamic: waitWait for the proof, with a cap; fixed seconds break.
Login, verification, confirmation: stopThe agent stops, says where and what's missing, and the person takes over.
Stopping protectsAgainst mistakes and against an instruction planted on the page.