Um coding agent que pode correr rm -rf / sem consequências. Esse é o nível de isolamento que o clawk traz: cada agente tem a sua própria máquina Linux descartável, e a tua fica intacta.

Usar coding agents como Claude Code ou Codex traz um dilema. Para serem úteis, precisam de instalar pacotes, correr código, iniciar servidores, usar a rede. Na tua máquina, as opções são duas: aprovar cada comando (e babysitar prompts de 5 em 5 segundos), ou ativar o --dangerously-skip-permissions e rezar para que nada importante esteja a um rm -rf ou um token vazado de distância.

O clawk é a terceira via. Criado por clawkwork, escrito em Go, disponível em github.com/clawkwork/clawk. A ideia é simples: em vez de pores o agente a correr no teu sistema, dás-lhe uma VM Linux inteira, descartável, com a rede controlada e o teu código montado lá dentro.

O que interessa aqui é como o clawk isola coding agents com VMs descartáveis, a diferença entre isolamento por VM e sandboxing por processo, o sistema de rede com allow-list por projeto, e o ciclo de vida de uma sandbox. - O que ainda falta para a versão 1.0

Terminal com clawk a bootar uma VM e attach do Claude

⬆ clawk a bootar uma VM e a fazer attach do Claude Code — um comando, zero babysitting



O Problema: Agentes Precisam de Liberdade, Tu Precisas de Controlo

Coding agents são ferramentas poderosas porque fazem coisas. Instalam dependências, escrevem ficheiros, correm testes, fazem commits, dão push. Mas essa autonomia é exatamente o que os torna perigosos no teu ambiente real.

As soluções existentes não são ideais:

  • Containers (Docker, devcontainers) — partilham o kernel do host e um bug de escalamento pode expor tudo. Além disso, muitas configurações montam o socket do Docker, dando ao container controlo total sobre o daemon do host.
  • Sandboxes a nível de OS (como o sandbox-runtime da Anthropic) — aplicam regras de processo na tua máquina real. Um erro de configuração e as tuas chaves SSH, keychain e tokens ficam expostos.
  • Aprovar cada ação — derrota o propósito de ter um agente autónomo.

O clawk aborda o problema de raiz: o agente não está na tua máquina. Está noutra máquina.


O Que É o clawk, Exactamente

O clawk é uma CLI que cria VMs Linux descartáveis para coding agents. Funciona em macOS Apple Silicon (via Virtualization.framework) e experimentalmente em Linux (via Firecracker). Cada projeto tem a sua própria VM, isolada por hypervisor, com o código montado lá dentro e a rede filtrada por uma allow-list que nem o root do guest consegue alterar.

cd ~/code/meu-projeto
clawk                      # boot da VM + attach do Claude Code
clawk run shell            # ou: abre uma shell na mesma VM
clawk down                 # para a VM (repositório + estado do agente preservados)
clawk attach               # volta mais tarde — faz boot e reattach
clawk destroy              # remove a VM (conversas do agente ficam)

A barreira não é uma regra num prompt que o agente pode ser convencido a ignorar. É uma máquina separada. O que o agente vê é apenas o que tu montaste e permitiste na rede.



Porquê uma VM e Não um Container?

Esta é a decisão central do clawk e vale a pena perceber porquê.

VM (clawk) Container
Kernel Próprio kernel Linux Partilhado com o host
Isolamento Hypervisor Syscalls filtradas (seccomp, LSMs)
Acessos ao host Só o que montaste O que não está nos deny rules
Root no guest Root real — pode tudo Root com restrições (capabilities)
Reproduzir ambiente Qualquer imagem OCI Dockerfile + bind mounts

Uma VM dá ao agente um sistema Linux standard: kernel normal, userland normal, /dev/kvm se o hardware suportar. Pode instalar pacotes, editar /etc, carregar módulos, fazer bind a portas privilegiadas. Coisas que um container restrito muitas vezes não deixa fazer.

E quando o agente parte tudo? clawk destroy && clawk — VM nova, repositório intacto, conversas preservadas.


Rede Bloqueada por Defeito

O tráfego de saída está negado por omissão. Cada sandbox tem a sua própria allow-list. DNS resolve tudo, mas TCP, UDP (incluindo QUIC) e ICMP para hosts não listados são recusados.

Registos comuns (npm, PyPI, crates.io, GitHub, Anthropic) vêm pré-autorizados. O filtro é DNS-aware: se permitires example.com, funciona mesmo quando os IPs mudam.

clawk network allow meu-projeto api.stripe.com
clawk network denials meu-projeto    # o que o agente tentou e foi bloqueado
clawk forward add meu-projeto 3000   # localhost:3000 → servidor dev no guest

As negações são registadas com o hostname que o guest resolveu. O resultado é um log do que o agente tentou alcançar — útil para ajustares a lista sem adivinhares.


Ciclo de Vida: Partir sem Medo

A regra de persistência do clawk é simples: a VM é descartável, tudo o que importa vive no host.

                    clawk down    clawk destroy
Repo (commits)                     
Estado do agente                   
Disco da VM                        

O estado do agente (conversas do Claude, memória, projetos) fica montado no host em ~/.clawk/namespaces/default/state/<nome>/. Quando recrias a sandbox, o --resume recupera a conversa anterior.

Há ainda suporte a snapshot: clawk snapshot salva a memória da VM para disco. Quando fazes resume, a VM volta exatamente ao estado anterior — processos em background, servidores dev, tudo.


Configuração com clawk.mod

Quando um projeto precisa de mais que os defaults, cria-se um clawk.mod:

sandbox meu-projeto (
    vm (
        cpu    4
        memory 8GiB
        image  golang:1.25     # qualquer imagem OCI serve de rootfs
    )
    network ( allow api.stripe.com )
    forwards ( 3000 )
    env ( DATABASE_URL )       # só os nomes; valores vêm da tua shell
    on create ( "go mod download" )
    agent (
        instructions "Ask before running destructive commands."
    )
)

Sem ficheiro Docker, sem devcontainer.json, sem configuração extra. Qualquer imagem OCI que uses no Docker funciona aqui.


Ticket Mode: Vários Repos, Uma Sandbox

Trabalhas num ticket que abrange vários repositórios? O clawk work cria uma sandbox com uma git worktree por repo, em branches novas, e o clawk pr mais tarde abre PRs coordenados para o que mudou.

cd ~/code/meu-workspace      # contém um clawk.mod com a lista de repos
clawk work INFRA-123          # uma sandbox, worktree por repo, Claude attached
clawk pr INFRA-123            # push branches + PR por repo

Estado Actual e Limitações

O clawk está pré-1.0 e em desenvolvimento activo. Breaking changes são esperadas entre releases. O que deves saber:

  • Só macOS Apple Silicon para uso diário. O suporte Linux via Firecracker é experimental (sem propagação live de worktrees, sem host-file push).
  • Intel Macs e Windows — não suportados.
  • Modelo de segurança — o que montares ou permitires na rede está exposto. O agente pode fazer commit de código malicioso ou dar push para qualquer repo que o teu ssh-agent consiga alcançar. Revê o que sai de uma sandbox como reverias o PR de um estranho.
  • Pre-1.0 — nada está congelado até ao lançamento.


Conclusão

O clawk resolve um problema real de forma elegante. Em vez de tentar domar coding agents com políticas de processo, prompt engineering ou approval flows, dá-lhes o que eles precisam — uma máquina inteira — e mantém a tua separada.

A barreira é física (ou quase): um hypervisor, não uma rule list. O agente pode fazer o que quiser dentro da VM, e quando a parte, clawk destroy && clawk e está pronto outra vez.

Para quem usa coding agents no dia-a-dia e quer produtividade máxima sem comprometer a segurança da máquina, vale a pena experimentar. Especialmente o ticket mode, que fecha o ciclo multi-repo de uma forma que ainda não vi noutra ferramenta.

Recursos adicionais

Comentários (0)

Nenhum comentário ainda. Seja o primeiro!

Deixar comentário