← Blog
Aixgo v0.7.4: the chat CLI is scriptable
Catching up on v0.7.1 through v0.7.4: one-shot chat, aixgo doctor, output caps, shell completion, and a round of security fixes.
Three framework releases have landed since v0.7.0: v0.7.1 in March, v0.7.3 in April, and v0.7.4 in May.
None of them changed the library API. Almost all of the work went into the aixgo binary, and the change
most likely to matter to you is that aixgo chat no longer needs a terminal.
What you get going from v0.7.0 to v0.7.4
Chat runs one-shot and reads stdin
Before v0.7.3, aixgo chat was interactive only. It now takes a prompt on the command line with -p and
exits once the answer is done:
aixgo chat -p "explain the retry policy in this config"--stdin appends piped input to the prompt, and it enables itself when stdin is not a TTY, so pipes work
without passing the flag:
cat config/agents.yaml | aixgo chat -p "what breaks if I remove the fallback model?"Add -o json when something downstream has to parse the result.
aixgo doctor
aixgo doctor runs a short readiness check and prints a status per area. It verifies that your Go runtime
meets the project minimum, that at least one LLM provider key is configured, and that ~/.aixgo exists with
restrictive permissions. Pass --config and it also parses your YAML and probes every MCP server listed in
it for reachability.
aixgo doctor --config config/agents.yaml --output jsonIt exits 0 when every check passes (warnings still count as a pass) and 1 when any check fails, so it works as a CI step as well as the thing to paste into a bug report.
Caps on tokens and output size
--max-tokens sets the response ceiling, where 0 keeps the provider default. --max-output-kib is a soft
cap on non-interactive output: oversized responses get truncated and a warning goes to stderr, so a hit cap
is visible rather than silent.
Completion and history
aixgo completion generates scripts for bash, zsh, fish, and powershell. Some of the suggestions are
computed at completion time: --model completes against the model IDs your configured providers actually
return, and --session completes against your saved session IDs.
Interactive chat now uses readline, with history persisted to ~/.aixgo/chat_history. --no-history turns
that off for a session.
Security fixes
v0.7.3 carried a batch of security work: a path traversal fix (issue #131), an SSRF-safe JWK fetch, tightened permissions on files the tools write, and fixes for the critical and high findings from an Aikido scan. It also added govulncheck and kube-linter to CI as regression guards, plus regression tests covering the path traversal, SSRF, and file permission fixes. The full commit list is on the release page.
One behavior change worth knowing: chat now opens its history file with O_NOFOLLOW. If you had symlinked
~/.aixgo/chat_history elsewhere, that symlink is no longer followed.
Release by release
v0.7.4
The only commit in v0.7.4 touches the documentation site: the top navigation drops to four items and loses the Stable badge. Nothing in the module or the CLI changed. If you are already on v0.7.3, upgrading only moves your version string.
v0.7.3
Everything in the section above landed here: the CLI additions (-p and --stdin, doctor, completion,
readline history, --max-tokens, --max-output-kib) and the security batch.
A note on v0.7.2, since its absence from the releases page is confusing: the tag exists (bc6261a, together
with v0.7.2-prod), but no GitHub release was ever published for it. The v0.7.3 release notes compare
against v0.7.1, so every v0.7.2 commit is listed there instead. go get ...@v0.7.2 resolves fine. There is
just no release page to link.
v0.7.1
Two fixes. Test environment isolation for the Anthropic provider factory, and a sort in the interactive model picker so priority models are offered in priority order rather than in whatever order the provider API returned them.
Upgrading
go get github.com/aixgo-dev/aixgo@v0.7.4For the CLI binary:
go install github.com/aixgo-dev/aixgo/cmd/aixgo@v0.7.4None of the three release notes flag a breaking change. The CLI work is all new flags and new subcommands,
and no library API moved. The O_NOFOLLOW change on the chat history file is the one spot where existing
behavior differs, and it only reaches you if that file was a symlink.
Links
Ready to build one?
The quick start takes four steps and ends with a running multi-agent system.