opencode-raven 2.3.4 → 2.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.3.5
4
+
5
+ ### Changed
6
+ - OpenCode 2 now auto-approves any otherwise-asking permission inside Raven Search and Raven MCP, including skill loading, instead of maintaining a tool allowlist. Explicit denials, edit and nested-delegation restrictions, and other agents' permissions remain unchanged.
7
+ - Documented that Raven's unattended execution is trusted rather than read-only: shell commands and MCP tools can modify the system or external services.
8
+
3
9
  ## 2.3.4
4
10
 
5
11
  ### Fixed
package/README.md CHANGED
@@ -138,7 +138,7 @@ Under the hood, Raven registers two public delegation tools and one internal bri
138
138
  | `raven_mcp` | Creates or resumes a Raven MCP session for online research using built-in web tools, global or on-demand MCPs, and local retrieval tools when needed for context. No MCP is required. |
139
139
  | `raven_mcp_bridge` | Internal bridge used only by the Raven MCP agent. |
140
140
 
141
- On OpenCode V2, Raven auto-approves permission checks for the public `raven_seek` and `raven_mcp` delegation tools instead of prompting on every call. Inside either Raven agent, it also auto-approves `webfetch`, `websearch`, `fetch`, and tools belonging to enabled globally configured MCP servers. Explicit deny rules still apply. These execution-time approvals do not add a blanket agent permission or change the main agent's tool permissions, model request, or access restrictions on the internal MCP bridge.
141
+ On OpenCode V2, Raven auto-approves permission checks for the public `raven_seek` and `raven_mcp` delegation tools instead of prompting on every call. Inside either Raven agent, any permission check that would otherwise ask is automatically approved, including skill loading and MCP calls. Explicit deny rules still apply. These execution-time approvals do not add a blanket agent permission or change the main agent's tool permissions, model request, or access restrictions on the internal MCP bridge.
142
142
 
143
143
  For a related follow-up, the main agent can reuse the ID returned by the earlier call:
144
144
 
@@ -288,7 +288,7 @@ Raven is optimized for autonomous retrieval:
288
288
 
289
289
  - Raven Search has read, search, unrestricted shell, external-directory, and globally configured MCP access without normal permission prompts.
290
290
  - Raven MCP has the same retrieval access as Raven Search, plus the internal on-demand MCP bridge. It can use built-in web tools without an MCP and inspect local files for research context.
291
- - Both agents deny edit tools and nested delegation, but shell access is not a read-only sandbox and can modify the system.
291
+ - Both agents deny edit tools and nested delegation, but shell access is not a read-only sandbox and can modify the system. MCP tools may also modify external systems; V2 auto-approval trusts the Raven agents rather than enforcing read-only execution.
292
292
  - Queries are sent to Raven's configured model provider.
293
293
  - Remote MCP requests are sent to their services; local MCP entries launch local commands and inherit environment values.
294
294
  - Startup performs an npm update check and probes enabled on-demand MCPs.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-raven",
3
- "version": "2.3.4",
3
+ "version": "2.3.5",
4
4
  "description": "Context-saving search and on-demand MCP routing for OpenCode through focused Raven agents.",
5
5
  "main": "./index.ts",
6
6
  "exports": {
package/v2.ts CHANGED
@@ -58,7 +58,6 @@ export async function setupRaven(ctx: Context): Promise<Plugin.Cleanup> {
58
58
  const background = backgroundDelegations(ctx, controller.signal)
59
59
  const location = { directory: ctx.location.directory }
60
60
  const agents: Record<string, AgentDefinition> = {}
61
- const globalMcpToolPrefixes = new Set<string>()
62
61
  const activeSessions = new Set<string>()
63
62
  let emitNotice: (notice: z.infer<typeof RavenRpc.events.notice.schema>) => Promise<void> = async () => {}
64
63
  let runtime: Runtime | undefined
@@ -199,8 +198,6 @@ export async function setupRaven(ctx: Context): Promise<Plugin.Cleanup> {
199
198
  registrations.push(await ctx.mcp.transform((editor) => {
200
199
  const names = editor.list().filter(([, server]) => !server.disabled).map(([name]) => name)
201
200
  raven.globalMcpRouting(names)
202
- globalMcpToolPrefixes.clear()
203
- for (const name of names) globalMcpToolPrefixes.add(`${name.replace(/[^a-zA-Z0-9_-]/g, "_")}_`)
204
201
  }))
205
202
 
206
203
  async function executeCommand(raw: string) {
@@ -215,17 +212,11 @@ export async function setupRaven(ctx: Context): Promise<Plugin.Cleanup> {
215
212
  registrations.push(rpc)
216
213
  emitNotice = (notice) => rpc.events.emit("notice", notice)
217
214
 
218
- // Approve specific retrieval actions at execution time, not by adding a
219
- // blanket agent allow rule that changes Raven's entire tool policy.
220
- // Explicit configured denials are final and do not invoke this hook.
215
+ // Approve Raven's asks at execution time; explicit denials remain final.
221
216
  registrations.push(await ctx.permission.hook("evaluate", (event) => {
222
217
  if (event.effect !== "ask") return
223
218
  const delegation = event.action === "raven_seek" || event.action === "raven_mcp"
224
- const retrieval = (event.agent === "raven" || event.agent === "raven-mcp") && (
225
- event.action === "webfetch" || event.action === "websearch" || event.action === "fetch"
226
- || [...globalMcpToolPrefixes].some((prefix) => event.action.startsWith(prefix))
227
- )
228
- if (delegation || retrieval) {
219
+ if (delegation || event.agent === "raven" || event.agent === "raven-mcp") {
229
220
  event.effect = "allow"
230
221
  }
231
222
  }))