1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 | {
"$schema": "https://opencode.ai/config.json",
"model": "google-vertex/gemini-3.1-pro-preview",
"plugin": [
"./plugin/legal.ts"
],
"skills": {
"paths": [
"{env:WORKSPACE_ROOT}/.playbooks",
"{env:WORKSPACE_ROOT}/.skills"
]
},
"instructions": [
"{env:WORKSPACE_ROOT}/.preferences/drafting.md"
],
"disabled_providers": [
"opencode"
],
"provider": {
"google-vertex": {
"npm": "@ai-sdk/google-vertex",
"name": "Google Vertex AI",
"models": {
"gemini-3.1-pro-preview": {
"name": "Gemini 3.1 Pro",
"family": "gemini",
"attachment": true,
"reasoning": true,
"temperature": true,
"tool_call": true,
"limit": {
"context": 1048576,
"output": 65536
},
"modalities": {
"input": [
"text",
"image",
"pdf"
],
"output": [
"text"
]
}
},
"gemini-3.5-flash": {
"name": "Gemini 3.5 Flash",
"family": "gemini",
"attachment": true,
"reasoning": true,
"temperature": true,
"tool_call": true,
"limit": {
"context": 1048576,
"output": 65536
},
"modalities": {
"input": [
"text",
"image",
"pdf"
],
"output": [
"text"
]
}
}
}
}
},
"mcp": {
"python": {
"type": "local",
"command": [
"sh",
"-c",
"cd \"$OPENCODE_CONFIG_DIR\" && exec deno run -N=cdn.jsdelivr.net,pypi.org,files.pythonhosted.org -R=node_modules -W=node_modules --node-modules-dir=auto jsr:@pydantic/mcp-run-python stdio"
],
"timeout": 60000
},
"courtlistener": {
"type": "remote",
"url": "https://mcp.courtlistener.com/",
"timeout": 30000
}
},
"permission": {
"read": "allow",
"glob": "allow",
"grep": "allow",
"list": "allow",
"task": "allow",
"skill": {
"*": "allow"
},
"search-document": "allow",
"cite": "allow",
"case-law": "allow",
"list-templates": "allow",
"get-template": "allow",
"update-template": "ask",
"delete-template": "ask",
"list-playbooks": "allow",
"update-playbook": "ask",
"delete-playbook": "ask",
"list-workflows": "allow",
"create-workflow": "ask",
"update-workflow": "ask",
"delete-workflow": "ask",
"list-skills": "allow",
"create-skill": "ask",
"update-skill": "ask",
"delete-skill": "ask",
"list-agents": "allow",
"create-agent": "ask",
"update-agent": "ask",
"delete-agent": "ask",
"read-document": "allow",
"python_run_python_code": "allow",
"courtlistener_*": "allow",
"draft-document": "ask",
"create-template": "ask",
"create-playbook": "ask",
"word-integration": "ask",
"tracked-changes": "ask",
"redline": "ask",
"redact": "ask",
"redaction-log": "allow",
"edit": "deny",
"bash": "deny",
"webfetch": "allow",
"web-search": "allow",
"websearch": "deny"
},
"agent": {
"explore": {
"disable": true
},
"general": {
"disable": true
},
"build": {
"disable": true
},
"plan": {
"disable": true
}
}
}
|