{"_id":"@azatakmyradov/opencode-external-subagents-plugin","_rev":"6-1a3577e38671495547ac747927331a08","name":"@azatakmyradov/opencode-external-subagents-plugin","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.0":{"name":"@azatakmyradov/opencode-external-subagents-plugin","version":"0.0.0","keywords":["claude-code","codex","opencode","opencode-plugin","subagents"],"license":"MIT","_id":"@azatakmyradov/opencode-external-subagents-plugin@0.0.0","maintainers":[{"name":"azatakmyradov","email":"azat@akmyradov.me"}],"homepage":"https://github.com/azatakmyradov/opencode-plugins/tree/main/packages/external-subagents","bugs":{"url":"https://github.com/azatakmyradov/opencode-plugins/issues"},"dist":{"shasum":"8be1cb1a8142032eba1d8af742f1caeafab5ed77","tarball":"https://registry.npmjs.org/@azatakmyradov/opencode-external-subagents-plugin/-/opencode-external-subagents-plugin-0.0.0.tgz","fileCount":5,"integrity":"sha512-Ole1Ao3klV4YSgw8V+iITi1WBmU+RCYfbNu/VbRVpCofXOtOI4rfZKJICKe94k6EqP1TKf0aOeAB62hUrHTH7w==","signatures":[{"sig":"MEUCIEyaW4yLaHICkFcqGKFwiosCOW8rOgJwWywGbdlgvO7uAiEA8psoznnyPqMHSyqC/V2y9wzINT2bO8UYL2vfJSmHNhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176083},"type":"module","exports":{".":"./dist/index.js","./rpc":"./dist/rpc.js","./tui":"./dist/tui.js"},"gitHead":"404c6f130ff1f58ae0818e69aa22bb10585aea06","scripts":{"test":"vp test run","build":"bun ../../scripts/build.ts .","check":"tsc --noEmit","prepack":"bun run build"},"_npmUser":{"name":"azatakmyradov","email":"azat@akmyradov.me"},"repository":{"url":"git+https://github.com/azatakmyradov/opencode-plugins.git","type":"git","directory":"packages/external-subagents"},"_npmVersion":"11.19.0","description":"Run Claude Code, Codex, and native OpenCode subagents through one tool","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"4.1.8","effect":"4.0.0-rc.112","@opencode-ai/plugin":"0.0.0-beta-18721","@opencode-ai/schema":"0.0.0-beta-18721","@anthropic-ai/claude-agent-sdk":"0.3.207"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"solid-js":">=1.9.0","@opentui/core":">=0.5.9","@opentui/solid":">=0.5.9"},"peerDependenciesMeta":{"solid-js":{"optional":true},"@opentui/core":{"optional":true},"@opentui/solid":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/opencode-external-subagents-plugin_0.0.0_1788221666021_0.8872260753431562","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@azatakmyradov/opencode-external-subagents-plugin","version":"0.1.0","keywords":["claude-code","codex","opencode","opencode-plugin","subagents"],"license":"MIT","_id":"@azatakmyradov/opencode-external-subagents-plugin@0.1.0","maintainers":[{"name":"azatakmyradov","email":"azat@akmyradov.me"}],"homepage":"https://github.com/azatakmyradov/opencode-plugins/tree/main/packages/external-subagents","bugs":{"url":"https://github.com/azatakmyradov/opencode-plugins/issues"},"dist":{"shasum":"063d4d20f050a54c9942ec6f9544c23f2ff7a028","tarball":"https://registry.npmjs.org/@azatakmyradov/opencode-external-subagents-plugin/-/opencode-external-subagents-plugin-0.1.0.tgz","fileCount":5,"integrity":"sha512-DDAQ4YhZmMa/lNFofngOf4WbJM+DGEU7t60OEmTqV0AI8iCKM1wU+BzFYE4a0JTaFlP5xphhwjIAJrAVokj36Q==","signatures":[{"sig":"MEUCIC35ZAxi0m5wgUuMSTXqW6zphV5ARC1aQurMIfUbz//GAiEAuHVQhCzfquRbBocuifJc+hPg8GFEdMf2V3EUPYQ7eKo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@azatakmyradov%2fopencode-external-subagents-plugin@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":176083},"type":"module","exports":{".":"./dist/index.js","./rpc":"./dist/rpc.js","./tui":"./dist/tui.js"},"gitHead":"081e689da6852d85c4c01fb5da77895f0f9fd1b2","scripts":{"test":"vp test run","build":"bun ../../scripts/build.ts .","check":"tsc --noEmit","prepack":"bun run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b9524e5-39e7-413c-9cb1-1c27c298e70e"}},"repository":{"url":"git+https://github.com/azatakmyradov/opencode-plugins.git","type":"git","directory":"packages/external-subagents"},"_npmVersion":"11.17.0","description":"Run Claude Code, Codex, and native OpenCode subagents through one tool","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.1.8","effect":"4.0.0-rc.112","@opencode-ai/plugin":"0.0.0-beta-18721","@opencode-ai/schema":"0.0.0-beta-18721","@anthropic-ai/claude-agent-sdk":"0.3.207"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"solid-js":">=1.9.0","@opentui/core":">=0.5.9","@opentui/solid":">=0.5.9"},"peerDependenciesMeta":{"solid-js":{"optional":true},"@opentui/core":{"optional":true},"@opentui/solid":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/opencode-external-subagents-plugin_0.1.0_1788221909644_0.24828463085797225","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@azatakmyradov/opencode-external-subagents-plugin","version":"0.1.1","keywords":["claude-code","codex","opencode","opencode-plugin","subagents"],"license":"MIT","_id":"@azatakmyradov/opencode-external-subagents-plugin@0.1.1","maintainers":[{"name":"azatakmyradov","email":"azat@akmyradov.me"}],"homepage":"https://github.com/azatakmyradov/opencode-plugins/tree/main/packages/external-subagents","bugs":{"url":"https://github.com/azatakmyradov/opencode-plugins/issues"},"dist":{"shasum":"4248be5294fb8f58399c31379d15136f4702edac","tarball":"https://registry.npmjs.org/@azatakmyradov/opencode-external-subagents-plugin/-/opencode-external-subagents-plugin-0.1.1.tgz","fileCount":5,"integrity":"sha512-0PBhJFO1tPauNwiQkuk8OCRzKUylQhc4UyR7Ny0wqLrloF80MBveWegVHicv6BSyM2ZI2NMTJhskViU2NNvIDA==","signatures":[{"sig":"MEUCIQDjpSbqovoMLRhgzCP8ENw37NGKaI8shvD28ti/8lLHQwIgKNhhKoDw3cBIdNb7oN476AGt9A/oLEReyLRY/D9zBSI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@azatakmyradov%2fopencode-external-subagents-plugin@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":176437},"type":"module","exports":{".":"./dist/index.js","./rpc":"./dist/rpc.js","./tui":"./dist/tui.js"},"gitHead":"f96d1996f4395a33489708bb67151ad69b3a1e9e","scripts":{"test":"vp test run","build":"bun ../../scripts/build.ts .","check":"tsc --noEmit","prepack":"bun run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b9524e5-39e7-413c-9cb1-1c27c298e70e"}},"repository":{"url":"git+https://github.com/azatakmyradov/opencode-plugins.git","type":"git","directory":"packages/external-subagents"},"_npmVersion":"11.17.0","description":"Run Claude Code, Codex, and native OpenCode subagents through one tool","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.1.8","effect":"4.0.0-rc.112","@opencode-ai/plugin":"0.0.0-beta-18721","@opencode-ai/schema":"0.0.0-beta-18721","@anthropic-ai/claude-agent-sdk":"0.3.207"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"solid-js":">=1.9.0","@opentui/core":">=0.5.9","@opentui/solid":">=0.5.9"},"peerDependenciesMeta":{"solid-js":{"optional":true},"@opentui/core":{"optional":true},"@opentui/solid":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/opencode-external-subagents-plugin_0.1.1_1788388801129_0.09956821236335833","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@azatakmyradov/opencode-external-subagents-plugin","version":"0.1.2","keywords":["claude-code","codex","opencode","opencode-plugin","subagents"],"license":"MIT","_id":"@azatakmyradov/opencode-external-subagents-plugin@0.1.2","maintainers":[{"name":"azatakmyradov","email":"azat@akmyradov.me"}],"homepage":"https://github.com/azatakmyradov/opencode-plugins/tree/main/packages/external-subagents","bugs":{"url":"https://github.com/azatakmyradov/opencode-plugins/issues"},"dist":{"shasum":"a2fc8af37f15244d9ad57a9605ffa9b5870e2c26","tarball":"https://registry.npmjs.org/@azatakmyradov/opencode-external-subagents-plugin/-/opencode-external-subagents-plugin-0.1.2.tgz","fileCount":5,"integrity":"sha512-7GVKojL1VufxwKFgB21i2BIBgn5E8PWGQfdvplWOicDgVbeVuqVISpKA+N2aurI184YjR8+wF9hZTLqg+nYUnw==","signatures":[{"sig":"MEUCIQCitTdNP+bgcg+nr20rXReZnD0TRbp+QWIjePvv8frdgwIgWYg6qnDEejfhIi4UyIM63e1qk3RzuBusYnT188GnMuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@azatakmyradov%2fopencode-external-subagents-plugin@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":178375},"type":"module","exports":{".":"./dist/index.js","./rpc":"./dist/rpc.js","./tui":"./dist/tui.js"},"gitHead":"efc4e2f82cc193c956ee3119178ccc4f66759ac3","scripts":{"test":"vp test run","build":"bun ../../scripts/build.ts .","check":"tsc --noEmit","prepack":"bun run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b9524e5-39e7-413c-9cb1-1c27c298e70e"}},"repository":{"url":"git+https://github.com/azatakmyradov/opencode-plugins.git","type":"git","directory":"packages/external-subagents"},"_npmVersion":"11.19.0","description":"Run Claude Code, Codex, and native OpenCode subagents through one tool","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"4.1.8","effect":"4.0.0-rc.112","@opencode-ai/plugin":"0.0.0-beta-18721","@opencode-ai/schema":"0.0.0-beta-18721","@anthropic-ai/claude-agent-sdk":"0.3.207"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"solid-js":">=1.9.0","@opentui/core":">=0.5.9","@opentui/solid":">=0.5.9"},"peerDependenciesMeta":{"solid-js":{"optional":true},"@opentui/core":{"optional":true},"@opentui/solid":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/opencode-external-subagents-plugin_0.1.2_1788757424701_0.44131313935557803","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@azatakmyradov/opencode-external-subagents-plugin","version":"0.1.3","keywords":["claude-code","codex","opencode","opencode-plugin","subagents"],"license":"MIT","_id":"@azatakmyradov/opencode-external-subagents-plugin@0.1.3","maintainers":[{"name":"azatakmyradov","email":"azat@akmyradov.me"}],"homepage":"https://github.com/azatakmyradov/opencode-plugins/tree/main/packages/external-subagents","bugs":{"url":"https://github.com/azatakmyradov/opencode-plugins/issues"},"dist":{"shasum":"b1f2081ba178332a20b4842a37b5796cb6be92d5","tarball":"https://registry.npmjs.org/@azatakmyradov/opencode-external-subagents-plugin/-/opencode-external-subagents-plugin-0.1.3.tgz","fileCount":5,"integrity":"sha512-pp9wa2TNHc5SJRlh4625qcyEvykyfkbwAV8/PT5bXvYNnM4Em244sjiKIT2EBCJ+um3imhJ0kuJACq0CfaYEhQ==","signatures":[{"sig":"MEQCIEmMn20JZTIqfqmHQZWNkP8xALbfpc4J5rYNzDPN9yGFAiAbZrApWpkk+jskX0TtRHra8NhK7H7jjnXSi/GjTkiqvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBnVoffrgti8LYRCqtCe37ED+FcgjCUTcI8swgXxOQsfAiB8tBTLdGTXQGr81GVuqTPhAfg1qXwy1aUI+kBBcIsk/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@azatakmyradov%2fopencode-external-subagents-plugin@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":178338},"type":"module","exports":{".":"./dist/index.js","./rpc":"./dist/rpc.js","./tui":"./dist/tui.js"},"gitHead":"82e8487b4d9a90099c23763f244b9ae401f9a366","scripts":{"test":"vp test run","build":"bun ../../scripts/build.ts .","check":"tsc --noEmit","prepack":"bun run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b9524e5-39e7-413c-9cb1-1c27c298e70e"}},"repository":{"url":"git+https://github.com/azatakmyradov/opencode-plugins.git","type":"git","directory":"packages/external-subagents"},"_npmVersion":"11.19.0","description":"Run Claude Code, Codex, and native OpenCode subagents through one tool","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"4.1.8","effect":"4.0.0-rc.112","@opencode-ai/plugin":"0.0.0-beta-18721","@opencode-ai/schema":"0.0.0-beta-18721","@anthropic-ai/claude-agent-sdk":"0.3.207"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"solid-js":">=1.9.0","@opentui/core":">=0.5.9","@opentui/solid":">=0.5.9"},"peerDependenciesMeta":{"solid-js":{"optional":true},"@opentui/core":{"optional":true},"@opentui/solid":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/opencode-external-subagents-plugin_0.1.3_1789719577248_0.0708204705824429","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"_id":"@azatakmyradov/opencode-external-subagents-plugin@0.2.0","bugs":{"url":"https://github.com/azatakmyradov/opencode-plugins/issues"},"dist":{"shasum":"e07e257255a1ab4f3df33c59814ab76ea0eb0929","tarball":"https://registry.npmjs.org/@azatakmyradov/opencode-external-subagents-plugin/-/opencode-external-subagents-plugin-0.2.0.tgz","fileCount":5,"integrity":"sha512-/winD6zMDTq2s34hy0jEx5sacmIEKniFqSy3mSE5Iol4olkWhUbP5EkXB8XRyQtmz4a/rwV1BOIXleFxI75tmQ==","signatures":[{"sig":"MEUCIQCIqn6u417mUJoddEeKg9C3Risqr+UNFd8xGNRF+7UIqAIgHsqVdv/hkgbOU5+JOno/oTTQrAf3Z/zDfQIeyEXNjto=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIE8GzAwfuHCqXMZvVmzca6R4NKrkOr43oiyFzegiCUmLAiEA+hxh0u5tLIKAHQ/CRidvGeNDC6AVCroU9gbr6xTBH4I="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@azatakmyradov%2fopencode-external-subagents-plugin@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":178286},"name":"@azatakmyradov/opencode-external-subagents-plugin","type":"module","exports":{".":"./dist/index.js","./rpc":"./dist/rpc.js","./tui":"./dist/tui.js"},"gitHead":"cf66d050f0263fb6adf1c0720c272e22ed71c8cc","license":"MIT","scripts":{"test":"vp test run","build":"bun ../../scripts/build.ts .","check":"tsc --noEmit","prepack":"bun run build"},"version":"0.2.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2b9524e5-39e7-413c-9cb1-1c27c298e70e"}},"homepage":"https://github.com/azatakmyradov/opencode-plugins/tree/main/packages/external-subagents","keywords":["claude-code","codex","opencode","opencode-plugin","subagents"],"repository":{"url":"git+https://github.com/azatakmyradov/opencode-plugins.git","type":"git","directory":"packages/external-subagents"},"_npmVersion":"11.19.0","description":"Run Claude Code, Codex, and native OpenCode subagents through one tool","directories":{},"maintainers":[{"name":"azatakmyradov","email":"azat@akmyradov.me"}],"_nodeVersion":"24.20.0","dependencies":{"zod":"4.1.8","effect":"4.0.0-rc.112","@opencode/plugin":"2.0.7","@opencode/schema":"2.0.7","@anthropic-ai/claude-agent-sdk":"0.3.207"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"solid-js":">=1.9.0","@opentui/core":">=0.5.9","@opentui/solid":">=0.5.9"},"peerDependenciesMeta":{"solid-js":{"optional":true},"@opentui/core":{"optional":true},"@opentui/solid":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/opencode-external-subagents-plugin_0.2.0_1789723452288_0.06919997869720418"}}},"time":{"created":"2026-09-01T00:14:25.811Z","modified":"2026-09-18T09:24:12.745Z","0.0.0":"2026-09-01T00:14:26.183Z","0.1.0":"2026-09-01T00:18:29.769Z","0.1.1":"2026-09-02T22:40:01.269Z","0.1.2":"2026-09-07T05:03:44.845Z","0.1.3":"2026-09-18T08:19:37.380Z","0.2.0":"2026-09-18T09:24:12.399Z"},"bugs":{"url":"https://github.com/azatakmyradov/opencode-plugins/issues"},"license":"MIT","homepage":"https://github.com/azatakmyradov/opencode-plugins/tree/main/packages/external-subagents","keywords":["claude-code","codex","opencode","opencode-plugin","subagents"],"repository":{"url":"git+https://github.com/azatakmyradov/opencode-plugins.git","type":"git","directory":"packages/external-subagents"},"description":"Run Claude Code, Codex, and native OpenCode subagents through one tool","maintainers":[{"name":"azatakmyradov","email":"azat@akmyradov.me"}],"readme":"# External Subagents\n\nRun native OpenCode agents, Claude Code, and Codex through OpenCode's existing `subagent` tool.\n\nThe plugin captures the built-in subagent executor and delegates normal agent names to it unchanged. Two additional agent names use plugin-managed external backends:\n\n- `claude-code` uses the Claude Agent SDK and a persistent Claude Code query.\n- `codex-cli` uses a persistent `codex app-server` thread.\n\nUp to four external sessions run concurrently. Up to 60 additional sessions wait in a FIFO queue. Settled sessions remain alive for follow-up prompts until they are pruned or the plugin unloads.\n\n## Security\n\nExternal agents do not execute commands through OpenCode's tool permission system. Claude Code runs with permission bypass enabled. Codex runs with `approvalPolicy: \"never\"` and `sandbox: \"danger-full-access\"`.\n\nThe external agents are disabled unless the plugin options include `allowDangerous: true` and name each backend in `enabledAgents`. These options explicitly acknowledge which external processes can read, modify, and execute files available to the OpenCode server process.\n\nThe parent OpenCode agent's resolved `subagent` permission must also allow the external agent name. A package plugin cannot open OpenCode's interactive permission prompt, so an `ask` or `deny` result fails closed. OpenCode's default wildcard permission may already resolve to `allow`; `enabledAgents` is the explicit external-backend gate. External launches are limited to root sessions, while native OpenCode subagents retain the configured native depth behavior.\n\nThe plugin evaluates the resolved configured rules directly. Public package plugins cannot invoke OpenCode's internal permission assertion, so saved interactive approvals and permission-evaluation hooks are not applied to this external branch.\n\n`trustProjectSettings` defaults to `false`. In that mode Claude Code reads user settings but not project settings. Setting it to `true` allows normal Claude project settings. It does not make command execution safer.\n\n## Install\n\nInstall the package and verify that Claude Code and Codex are already authenticated:\n\n```bash\nopencode2 plugin add @azatakmyradov/opencode-external-subagents-plugin\nclaude --version\ncodex --version\n```\n\nConfigure the plugin in `opencode.jsonc`:\n\n```jsonc\n{\n  \"$schema\": \"https://opencode.ai/config.json\",\n  \"plugins\": [\n    {\n      \"package\": \"@azatakmyradov/opencode-external-subagents-plugin\",\n      \"options\": {\n        \"allowDangerous\": true,\n        \"enabledAgents\": [\"claude-code\", \"codex-cli\"],\n        \"claudePath\": \"/Users/azatakmyradov/.local/bin/claude\",\n        \"codexPath\": \"/Users/azatakmyradov/.vite-plus/bin/codex\",\n      },\n    },\n  ],\n  \"agents\": {\n    \"build\": {\n      \"permissions\": [\n        { \"action\": \"subagent\", \"resource\": \"claude-code\", \"effect\": \"allow\" },\n        { \"action\": \"subagent\", \"resource\": \"codex-cli\", \"effect\": \"allow\" },\n      ],\n    },\n  },\n}\n```\n\nAdd equivalent permission rules to every primary agent that should be able to launch external agents.\n\nDo not disable `opencode.tool.subagent`. The plugin needs the built-in executor to preserve native OpenCode child sessions, permissions, jobs, continuation, cancellation, and TUI inspection.\n\nOptional settings:\n\n```jsonc\n{\n  \"plugins\": [\n    {\n      \"package\": \"@azatakmyradov/opencode-external-subagents-plugin\",\n      \"options\": {\n        \"allowDangerous\": true,\n        \"enabledAgents\": [\"claude-code\", \"codex-cli\"],\n        \"claudeModel\": \"sonnet\",\n        \"codexModel\": \"gpt-5-codex\",\n        \"trustProjectSettings\": false,\n      },\n    },\n  ],\n}\n```\n\n## Use\n\nThe model continues to call one `subagent` tool:\n\n- Native names such as `general`, `explore`, and configured OpenCode agents use real OpenCode child sessions.\n- `claude-code` and `codex-cli` use external sessions.\n- A configured native agent named `claude-code` or `codex-cli` takes precedence over the external backend.\n- Native continuation handles start with `ses_`.\n- External continuation handles start with `claude:` or `codex:`.\n\nExternal foreground calls wait for the result and cancel the external run if the tool call is interrupted. Background calls return immediately and inject a queued synthetic result into the parent session when they finish. Continue a settled external session by passing its handle; follow-ups are rejected while its current run is still active.\n\nNew external sessions accept optional per-call `model` and `reasoningEffort` inputs. `model` overrides the configured backend default. The advertised skill recommends Claude aliases `fable` and `opus`, and Codex slugs `gpt-5.6-sol` and `gpt-5.6-luna`. Supported effort values are `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, and `max`, with each backend mapping to its nearest native setting. Persistent continuations retain their original configuration and reject both fields. Putting a model name only in the task prompt does not select that model.\n\nThe plugin registers an advertised `external-subagents` skill that documents the child-context contract, live agent roster, native and external behavior, curated backend models and reasoning controls, concurrency, background discipline, persistent continuation, inspection, and security. Essential model-selection guidance also remains in the tool schema and description because loading an advertised skill is optional.\n\nUse `/subagents` from an OpenCode session to open the read-only external-session dashboard. The list shows queued, running, done, failed, and aborted Claude Code or Codex sessions with their backend, model, finalized turn count, session age, and live activity. Open a session for prompt, context utilization, compaction, native metadata, queued messages, active tools, and latest-output detail, then open its cumulative transcript. A prompt-footer summary appears while external work is running or queued, and settled work produces a toast.\n\nDashboard keys:\n\n- `j`/`k` or arrows move the selection and scroll detail or transcript rows.\n- `Enter`, `l`, or right arrow opens detail and then the transcript; `h` or left arrow goes back.\n- `PageUp`/`PageDown`, `Home`/`End`, and `gg`/`G` move through longer views.\n- `r` refreshes, `Escape` goes back one level, and `q` returns directly to the prior route.\n\nThe dashboard does not take over, send to, or cancel external sessions. Native OpenCode runs and `ses_` continuation IDs remain exclusively in OpenCode's built-in subagent inspector; external handles are never opened as native sessions.\n\nExternal sessions are process-local. Restarting the OpenCode service or unloading the plugin terminates active sessions and invalidates their continuation handles.\n\n## Local Development\n\nLoad this package directory directly:\n\n```jsonc\n{\n  \"plugins\": [\n    {\n      \"package\": \"./packages/external-subagents\",\n      \"options\": {\n        \"allowDangerous\": true,\n        \"enabledAgents\": [\"claude-code\", \"codex-cli\"],\n      },\n    },\n  ],\n}\n```\n\nThen validate it:\n\n```bash\nbun run check\nbun run test\nbun run build\n```\n","readmeFilename":"README.md"}