- Narrow blanket allow rules (npm, dotnet, grep, head, tail, echo, find)
to explicit read-only commands; route npx/ruff format through ask
- Deny privilege escalation via su and doas
- Add read denies for env files, key material, SSH/cloud credentials,
package-manager tokens, and container/kube configs
- Add edit denies for dotfiles, .git internals, and git hook injection
- Rename ibmi custom_tools toolset to catalog and enable builtin-tools
with directory-based tool config and SELECTED_TOOLSETS=catalog
- Document tool-preference rules and scratch workspace in AGENTS.md
Introduce a custom tool that returns total row counts via the Db2 for i
catalog statistic QSYS2.SYSTABLESTAT.NUMBER_ROWS. Supports an optional
table_schema parameter to disambiguate tables sharing a name across
libraries. Register the tool in the custom_tools toolset.
RULES.md was not an opencode-recognized rules filename, so global
rules (including the "no AI co-author" Git rule) were never loaded;
only the stale, un-version-controlled ~/.claude/CLAUDE.md fallback
applied, which lacked that rule. Rename to AGENTS.md so opencode
loads it natively as the global rules file.
Also add watcher.ignore for node_modules/.git/dist/.venv/target dirs.
- add the get_column_info custom tool for the ibmi-mcp-server and
relocate its --tools path from a hardcoded absolute path into the
version-controlled tree via {env:HOME} interpolation
- reorder permission rules so "rm -rf *" (deny) is no longer shadowed
by "rm *" (ask); last-match-wins now resolves rm -rf to deny
- add allow rules for the Python toolchain (unittest, py_compile,
venv activation, ruff check/format)
- rename plugin/ to plugins/ to match the documented plural convention
- commit package.json and package-lock.json so the ibmi-gate plugin
resolves @opencode-ai/plugin on a fresh stow
- correct the README opencode directory description
opencode's config schema types mcp.<name>.enabled as a static boolean and only interpolates {env:VAR} for string values, so conditional enablement is not expressible in opencode.jsonc alone.
Add a config-hook plugin that flips ibmi-server.enabled to true only when DB2i_HOST, DB2i_USER, and DB2i_PASS are all set. The config retains enabled: false as a fallback if the plugin fails to load.