# Otōto 2.9

> Source: <https://ototo.dev/changelog#v2.9>
> Published: 2026-09-30 21:47:45+00:00

`curl -fsSL https://ototo.sh | sh` installs the newest release for this machine, and `ototo update` fetches it from the same channel (`update_url` in `config.toml` points at your own mirror). Both check the release against Otōto's release key before anything is installed; `ototo update --check` only says whether there is a newer one. A package in `~/Downloads` still works as before.`search`` path:line` hits, with globs, whole words and case folding; for Claude Code and OpenCode, and as `ototo search`. No model, so it answers at once.` maven`: a dependency's effective version and scope, through parents, BOMs and properties (`ototo read pom.xml#spring-core`); - `spring-config`: a property as each profile sees it, and where each value is set (`ototo read spring.datasource.url`); - `terraform`: a block with its variables and locals worked out, per environment (`ototo read aws_db_instance.main@prod`); - `kube`: a Kustomize resource as it builds, and a Helm value with the templates that use it.`forge`.` gitlab` plugin answers about the branch's merge request, a pipeline by stage and a failed job's log, cut to what failed, for Claude Code (the `ototo forge`. It reaches the network only once you grant it: `ototo plugins grant gitlab`, then a token in `[plugin_settings.gitlab]` (or per host, for a self-hosted GitLab). It never sees the token; Otōto adds it.`ototo plugins`` ototo plugins help <plugin>` says what one reads and adds.`changes` for one commit or a range`--commit <sha>`, `--range A..B`, told by declaration like a branch's.` ototo digest`.` OTOTO_FULL=1` gives the whole output.`ototo read` that answers better.`ask` works`ototo doctor`
Coming from 2.8.5 or earlier? 2.8.6's tidier `ototo --help` is new to you too.
