Chak 0.3.1 Release Notes
Breaking Change — Human-in-the-Loop upgrade
tool_approval_handler has been replaced by hitl_handler. The old handler returned a plain bool; the new one returns HITLDecision, giving you three control paths:
HITLDecision.allow()— proceed unchangedHITLDecision.allow(overrides={...})— proceed with argument rewritesHITLDecision.abort()— cancel the tool call; the LLM receives a cancellation notice
Migration: replace async def handler(approval) -> bool with async def handler(request: HITLRequest) -> HITLDecision.
New — Built-in execution tools
Two new built-in tools ship with chak.tools.exec:
Bash— run any shell commandPython— write and execute inline Python code (code interpreter)
Both tools print a security warning on instantiation, since they execute with host-process permissions.
New — ClaudeSkill
Native integration for Anthropic Agent Skills. Point ClaudeSkill at any skill directory and the LLM gains access to its SKILL.md documentation and supporting scripts. Combine with Bash and Python for full agentic execution.
from chak.tools.exec import Bash, Python
from chak.tools.skills import ClaudeSkill
conv = chak.Conversation(
"openai/gpt-4o",
api_key="...",
tools=[ClaudeSkill("./skills/pdf"), Bash(), Python()],
)