Skip to content

v0.12.0-beta — O Fluxo Real 🐺

Pre-release
Pre-release

Choose a tag to compare

@msant262 msant262 released this 08 Jul 06:02

Okami 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 rode okami policy check --strict antes 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 aceitavam set_no_interrupt, param que o endpoint do gateway injeta
    desde a onda P0 (7939d6e) — TypeError mascarado como ❌ error em 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_task ganha set_no_interrupt, encadeado no _hkw (padrão do set_remote);
    Harness.__init__ aceita e guarda (self._set_no_interrupt, no-op no CLI).
  • Efeito colateral bom: o demote guard do /busy interrupt — morto até agora, nada setava
    no_interrupt=Truepassa 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_source encadeados run_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, /stop e /retry limpam 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_key direto) 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_id real); custom reetiquetado 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 .env manda 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ão NOME=valor com 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_secret resolve vault > env > .env; apply_vault_to_environ popula os.environ no boot (config._load_env) — providers/oauth leem
    do cofre sem editar nada.
  • Fluxo de captura: vault_setdeleteMessage no 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