v0.12.0-beta — O Fluxo Real 🐺
Pre-releaseOkami Agent — v0.12.0-beta "O Fluxo Real" 🐺
Suíte: 3.468 → 3.500 testes · lançada 2026-07-08.
⚠️ Beta. A superfície de comandos e config ainda pode mudar até a GA. Recomendado para uso real
(inclusive em VPS 24/7) — mas rodeokami policy check --strictantes de expor publicamente. Ver o
CHANGELOG completo.
🌐 Site: https://okamiagent.com · 📚 Docs: https://okamiagent.com/docs
A história desta release
A afirmação de "paridade com o Hermes" das releases anteriores era real para auditoria de código, mas
otimista demais para uso real. Esta release fecha 3 gaps de uso real — do tipo que só aparece operando
o agente no dia a dia, não lendo diff de código. No meio do caminho de mapear o primeiro, apareceu também
uma regressão autoinfligida da própria onda de auditoria anterior (v0.10.0-beta): todo turno pelo
gateway do Telegram estava quebrado.
✨ Highlights
- Regressão crítica corrigida — o gateway do Telegram crashava em TODO turno desde a onda de
auditoria anterior; achado e corrigido nesta release. /steer— injeta contexto no turno em andamento sem cancelar a tarefa.- Onboarding de provider simplificado — assinatura e token-plan ficam visíveis no menu sem depender
de CLI. - Segredo via chat — cofre cifrado que aceita API keys direto na conversa, apaga a mensagem original
e confirma, sem nunca expor o valor ao modelo.
🔥 Regressão crítica — gateway crashava TODO turno (da85c42)
run_task/Harness.__init__não aceitavamset_no_interrupt, param que o endpoint do gateway injeta
desde a onda P0 (7939d6e) —TypeErrormascarado como❌ errorem CADA turno vindo do Telegram. O
E2E anterior só cobria o caminho CLI (okami task), que não passa esse hook — nunca pegou.- Corrigido:
run_taskganhaset_no_interrupt, encadeado no_hkw(padrão doset_remote);
Harness.__init__aceita e guarda (self._set_no_interrupt, no-op no CLI). - Efeito colateral bom: o demote guard do
/busyinterrupt — morto até agora, nada setava
no_interrupt=True— passa a funcionar de verdade:_compact()marca a compactação como fase
não-interrompível. - Regressão travada em
test_it11_fixes.py(contrato runner↔Harness).
🎯 /steer — injeta no turno em andamento sem cancelar
/steer <texto>: injeta uma mensagem direta do usuário no contexto do turno já rodando (marcador
anti prompt-injection + nota de trust explícita no system prompt) — sem cancelar. Ao lado do/busy
interrupt (cancela e recomeça), agora existe também/busy steer(toda mensagem nova durante um turno
vira steer em vez de interromper).Session.pending_steer+steer_sourceencadeadosrun_task → Harness(mesmo padrão do
set_no_interrupt); drenado após cada resultado de tool; se não houver onde anexar, fica deferido
(nunca é perdido);/cancel,/stope/retrylimpam o steer pendente.
🔑 Onboarding de provider — assinatura/token-plan sem refém de CLI
- Diagnóstico: o Okami já NÃO dependia de CLI pra minimax/mimo/grok (já eram
api_keydireto) nem pro
Codex (já OAuth device-flow nativo) — o gap real era descoberta no menu, não arquitetura. - Presets novos em
provider_catalog.py:minimax-oauth(assinatura),minimax-cn(região China,
api.minimaxi.com),xai-oauth(SuperGrok/Premium+,client_idreal);customreetiquetado como
"traga seu próprio provider" (token-plan/API-key/endpoint OpenAI-compat). - Nenhum transport novo — só torna visível o que já existia.
🔐 Segredo via chat — cofre cifrado, apaga e confirma
- Cenário: usuário remoto sem acesso ao
.envmanda a API key direto no Telegram, o agente guarda seguro
e continua. Contrato de segurança: salvar, apagar a mensagem original e confirmar + valor só no
cofre, nunca exposto ao LLM. - Detecção no inbound do gateway, antes do modelo ver (
okami/core/redact.py): prefixos de chave
conhecidos (ghp_/sk-/xai-/AKIA/…) + padrãoNOME=valorcom keyword sensível e valor ≥12 chars
sem espaço; guard contra falso-positivo (linguagem natural tipo "a senha é X" e valores curtos não
disparam). - Cofre cifrado novo (
okami/core/secretvault.py): Fernet, chave 32B em$OKAMI_HOME/.secret_key(0600,
lazy), vault JSON só-ciphertext (0600, escrita atômica);resolve_secretresolvevault > env > .env;apply_vault_to_environpopulaos.environno boot (config._load_env) — providers/oauth leem
do cofre sem editar nada. - Fluxo de captura:
vault_set→deleteMessageno Telegram → confirmação🔐 guardei a credencial X→
texto sanitizado in-place segue pro histórico/run_task(o modelo vê só a nota, nunca o valor). - Bug de ordering corrigido no caminho:
redact(reply)rodava DEPOIS de persistir — vazava no
transcript/histórico; agora roda antes. - Nova dependência:
cryptography>=42. +40 testes de segurança; verificação independente confirma valor
cru ausente do disco (só ciphertext, 0600), sem falso-positivo.
⚠️ Sobre a paridade
A alegação de "paridade com Hermes" das releases anteriores era real pra auditoria de código, mas
superestimada pra uso real — os 3 gaps acima (e a regressão do gateway) só apareceram operando o
agente de verdade, não lendo diff. Esta release fecha essa lacuna e assume o erro.
✅ Release verification
- 3.500 testes passando (
uv run pytest -q), subindo de 3.468. - Nova dependência:
cryptography>=42. - Reprodução local:
uv sync --frozen uv run pytest -q uv run ruff check okami tests uv run bandit -c pyproject.toml -r okami -q uv run okami policy check --strict
🚀 Instalação / upgrade
# instalação nova (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/OkamiOps/Okami-Agent/main/scripts/install.ps1 | iex
# upgrade de instalação existente
uv tool upgrade okami-agent # ou: pip install -U okami-agent
okami setup # configura em 2-3 cliques
okami doctor # confirma que a versão instalada bate com o pyproject (sem version-drift)
okami chat # conversa no terminal📄 License
MIT (LICENSE) © 2026 OkamiOps.
🔗 Links
- 🌐 Landing: https://okamiagent.com
- 📚 Documentação: https://okamiagent.com/docs
- 💻 Agente (este repo): https://github.com/OkamiOps/Okami-Agent
- 📋 Changelog completo: CHANGELOG.md