diff --git a/bin/bwopencode b/bin/bwopencode index 77f1911..d2d65b5 100755 --- a/bin/bwopencode +++ b/bin/bwopencode @@ -294,7 +294,9 @@ build_opencode_authoring_mounts() { # sources; config in the project cannot override it. # # Both opencode.json and opencode.jsonc are mounted when present, so -# opencode can pick whichever format it prefers. +# opencode can pick whichever format it prefers. A managed +# /etc/opencode/AGENTS.md is mounted too when present (opencode.jsonc +# references it via "instructions"). # # On hosts without /etc/opencode/, nothing is bound here — opencode # falls back to user config at ~/.config/opencode/ as usual. A @@ -314,6 +316,10 @@ build_managed_config() { if [[ "${_has_jsonc}" -eq 1 ]]; then BWRAP_ARGS+=(--ro-bind /etc/opencode/opencode.jsonc /etc/opencode/opencode.jsonc) fi + # Managed AGENTS.md, referenced from opencode.jsonc via "instructions". + if [[ -f /etc/opencode/AGENTS.md ]]; then + BWRAP_ARGS+=(--ro-bind /etc/opencode/AGENTS.md /etc/opencode/AGENTS.md) + fi else printf 'bwopencode: warning: no /etc/opencode/opencode.json{,c} found on host.\n' >&2 printf ' Falling back to user config at ~/.config/opencode/.\n' >&2 diff --git a/bin/bwopencode2 b/bin/bwopencode2 index 82dd1ec..fa35aef 100755 --- a/bin/bwopencode2 +++ b/bin/bwopencode2 @@ -480,7 +480,9 @@ build_opencode2_authoring_mounts() { # project cannot override it. # # Both opencode.json and opencode.jsonc are mounted when present, so -# opencode2 can pick whichever format it prefers. +# opencode2 can pick whichever format it prefers. A managed +# /etc/opencode/AGENTS.md is mounted too when present (opencode.jsonc +# references it via "instructions"). # # On hosts without /etc/opencode/, nothing is bound here — opencode2 # falls back to user config as usual. A warning is emitted to stderr @@ -500,6 +502,10 @@ build_managed_config() { if [[ "${_has_jsonc}" -eq 1 ]]; then BWRAP_ARGS+=(--ro-bind /etc/opencode/opencode.jsonc /etc/opencode/opencode.jsonc) fi + # Managed AGENTS.md, referenced from opencode.jsonc via "instructions". + if [[ -f /etc/opencode/AGENTS.md ]]; then + BWRAP_ARGS+=(--ro-bind /etc/opencode/AGENTS.md /etc/opencode/AGENTS.md) + fi else printf 'bwopencode2: warning: no /etc/opencode/opencode.json{,c} found on host.\n' >&2 printf ' Falling back to user config at %s/.\n' "${OC2_CONFIG_SRC}" >&2 diff --git a/docs/bw-wrappers.md b/docs/bw-wrappers.md index a7471bd..9d88ec1 100644 --- a/docs/bw-wrappers.md +++ b/docs/bw-wrappers.md @@ -24,9 +24,10 @@ When present, the wrappers expose administrator-managed paths as optional, read-only mounts. They do not expose the rest of the corresponding `/etc` configuration directories. -- OpenCode: `/etc/opencode/skills` +- OpenCode: `/etc/opencode/skills` and `/etc/opencode/AGENTS.md` - OpenCode 2 (`bwopencode2`): `/etc/opencode/skills`, `/etc/opencode/agents`, - `/etc/opencode/commands`, and `/etc/opencode/plugins` + `/etc/opencode/commands`, `/etc/opencode/plugins`, and + `/etc/opencode/AGENTS.md` - Codex: `/etc/codex/skills` - Claude: `/etc/claude-code/.claude/skills` and `/etc/claude-code/managed-settings.json`