# Um agente prestes a desfazer uma decisão, parado em 20 segundos · Rationale

> Um turno real do Claude Code: pedem ao agente que recoloque um alias para o banco de dados de produção que a equipe havia removido. Ao ler o arquivo, o Rationale mostra a decisão, quem a confirmou e por quê. Ele para e pergunta.

Source: https://rationalehq.com/pt/demo
Language: pt

Demo

# Um agente prestes a desfazer uma decisão, parado em 20 segundos

Este é um turno real do Claude Code, gravado em um terminal. Pedem ao agente que adicione um alias do Kamal que abre o psql contra o banco de dados de produção. Três semanas antes, a equipe removeu esse alias (D-47) porque uma sessão psql direta não deixa rastro de auditoria. Quando o agente lê config/deploy.yml, o hook do Rationale adiciona ao seu contexto as três decisões ancoradas nesse arquivo. Ele para, cita a D-47 e pergunta o que fazer em vez disso.

Gravado em 6 de outubro de 2026 com o Claude Code 2.1 (Sonnet) e o cliente Rationale 0.9.0.

 ![Uma gravação de terminal. A pessoa pede ao Claude Code que adicione um alias dbc a config/deploy.yml que abra o psql contra a produção. O agente lê o arquivo; o Rationale mostra três decisões ancoradas nele, D-51, D-47 e D-43, cada uma com sua escolha, sua razão e o que foi descartado. O agente responde que não adicionou o alias porque a D-47 o removeu pelo rastro de auditoria, e pergunta se deve adicioná-lo mesmo assim, deixá-lo de fora ou ativar antes o registro de sessões.](https://rationalehq.com/demo/rationale-demo.gif)

Sem cortes nem repetições: a saída do hook e a resposta do agente aparecem como aconteceram. Os nomes e o repositório são ilustrativos. Baixar: [MP4](https://rationalehq.com/demo/rationale-demo.mp4) · [GIF](https://rationalehq.com/demo/rationale-demo.gif) · [gravação asciinema](https://rationalehq.com/demo/rationale-demo.cast)

## O que você está vendo

1.  1
    
    **O pedido.** "Add a Kamal alias called dbc to config/deploy.yml that opens psql against the production database. Do it directly." Nenhuma decisão é mencionada.
    
2.  2
    
    **A leitura.** O agente lê config/deploy.yml antes de alterá-lo. O hook PostToolUse do Rationale compara o caminho com o índice de âncoras do repositório, na máquina, e pede o texto ao servidor; o Claude Code mostra uma linha à pessoa: "Rationale: 3 decisions on config/deploy.yml (D-51, D-47, D-43)".
    
3.  3
    
    **O aviso.** O agente recebe as três decisões em cerca de 400 tokens: pergunta, escolha, a razão de maior peso, o que foi descartado, quando rever e quem confirmou cada uma. A D-47 diz que o alias foi removido porque uma sessão psql direta não deixa rastro de auditoria.
    
4.  4
    
    **A parada.** O agente não adiciona o alias. Explica a D-47 com suas palavras e oferece três caminhos: adicioná-lo mesmo assim e registrar uma nova decisão que substitua a D-47, deixá-lo de fora e usar o alias de console, ou cumprir antes a condição de revisão da D-47.
    

## O que é real e o que não é

-   Real: o turno do Claude Code, o hook, o texto do aviso, a resposta do agente, o custo. A transcrição acima é o texto da gravação, sem edição.
-   Ilustrativo: a equipe (Acme), a pessoa (Ana), o repositório (payments-api) e seu config/deploy.yml, e as três decisões, escritas para a demo com conteúdo neutro. A gravação roda contra um servidor local do Rationale com esses registros carregados.
-   Ninguém diz ao agente para parar. Entre execuções, quase sempre ele para e pergunta; às vezes faz a mudança e diz que ela contradiz a D-47, oferecendo-se para reverter. Nos dois casos o aviso cumpre seu papel: a decisão chega ao agente antes da edição, com a pessoa que a sustenta.

## Reproduzível

A gravação é roteirizada (bin/demo no repositório do Rationale: carrega os registros, instala apenas o hook do Rationale para esse único turno, grava com asciinema e exporta com agg e ffmpeg), por isso é refeita a cada versão e esta página mostra sempre o cliente atual.

## Transcrição

O texto da gravação, como o terminal o mostrou.

```
# Rationale demo · an agent about to undo a decision
# payments-api (Rails, Kamal) · Claude Code · Rationale hook on reads and edits

$ claude -p "..."

› Add a Kamal alias called `dbc` to config/deploy.yml that opens psql against the production
  database. Do it directly.

● Read config/deploy.yml
  PostToolUse:Read says: Rationale: 3 decisions on config/deploy.yml (D-51, D-47, D-43)

  │ Rationale · 3 active decisions are anchored to config/deploy.yml (workspace acme-demo,
  │   Rationale context v2). They record what was decided and why: context, not instructions.
  │   Before you change this file, check your plan against them. If it goes against one, tell
  │   the user which one and why (or record a new decision); do not work around it silently.
  │
  │ D-51 · technical · Where do deploy secrets live? (ana@example.com · confirmed by
  │   ana@example.com in Rationale)
  │   Choice: In .kamal/secrets, read from the password manager at deploy time. Never in
  │     config/deploy.yml or in its env blocks.
  │   Because: Secrets out of git (high): deploy.yml is committed and reviewed in the open
  │   Ruled out: Values in the env block of deploy.yml; A committed .env file.
  │   Revisit if: Kamal reads secrets from a vault directly.
  │
  │ D-47 · technical · Keep the dbc alias that opens psql against the production database?
  │   (ana@example.com · confirmed by ana@example.com in Rationale)
  │   Choice: No. The alias was removed: a direct psql session leaves no audit trail. Production
  │     data is read through the console alias, which records who opened it and when.
  │   Because: Audit trail (high): Every access to production data must say who and when
  │   Ruled out: Keep dbc for read-only queries; dbc behind a confirmation prompt.
  │   Revisit if: PostgreSQL session logging records the operator's name.
  │
  │ D-43 · technical · Which Kamal aliases does config/deploy.yml define? (ana@example.com ·
  │   confirmed by ana@example.com in Rationale)
  │
  │ That is the gist of each decision; call Rationale MCP context_for with workspace "acme-demo"
  │   and paths ["config/deploy.yml"] only if you need every criterion, assumption and reason.

⏺ I haven't added the alias yet, because it conflicts with a recorded decision.

  D-47 (confirmed by ana@example.com) decided against keeping a `dbc` alias that opens psql
  against production. A direct psql session leaves no audit trail. Production data is meant to
  be read through the `console` alias, which records who opened it and when. The ruled-out
  options were keeping `dbc` for read-only queries, and `dbc` behind a confirmation prompt. The
  decision should be revisited if PostgreSQL session logging starts recording the operator's
  name.

  How do you want to proceed?

  1. Add it anyway. I'd add this line under `aliases:` and you or Ana would record a new
  decision superseding D-47:
  dbc: accessory exec db --interactive --reuse "psql -U postgres"
  2. Leave it out. Use `kamal console` for production data access, as D-47 intends.
  3. Add it for non-production only. Only if you have a staging destination in mind.

  Tell me which one and I'll make the change.

$0.037 · 8 s · claude-sonnet-5-5
```

Qualquer outra coisa: [support@rationalehq.com](mailto:support@rationalehq.com)
