coding-tools-mcp 0.1.5__tar.gz → 0.1.7__tar.gz
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.
- {coding_tools_mcp-0.1.5/coding_tools_mcp.egg-info → coding_tools_mcp-0.1.7}/PKG-INFO +78 -15
- coding_tools_mcp-0.1.5/PKG-INFO → coding_tools_mcp-0.1.7/README.md +38 -33
- {coding_tools_mcp-0.1.5 → coding_tools_mcp-0.1.7}/coding_tools_mcp/__init__.py +1 -1
- {coding_tools_mcp-0.1.5 → coding_tools_mcp-0.1.7}/coding_tools_mcp/server.py +1160 -311
- coding_tools_mcp-0.1.5/README.md → coding_tools_mcp-0.1.7/coding_tools_mcp.egg-info/PKG-INFO +96 -11
- {coding_tools_mcp-0.1.5 → coding_tools_mcp-0.1.7}/coding_tools_mcp.egg-info/SOURCES.txt +1 -2
- {coding_tools_mcp-0.1.5 → coding_tools_mcp-0.1.7}/pyproject.toml +3 -3
- coding_tools_mcp-0.1.5/docs/profile-v0.1.md +0 -1139
- {coding_tools_mcp-0.1.5 → coding_tools_mcp-0.1.7}/LICENSE +0 -0
- {coding_tools_mcp-0.1.5 → coding_tools_mcp-0.1.7}/coding_tools_mcp/__main__.py +0 -0
- {coding_tools_mcp-0.1.5 → coding_tools_mcp-0.1.7}/coding_tools_mcp/landlock_exec.py +0 -0
- {coding_tools_mcp-0.1.5 → coding_tools_mcp-0.1.7}/coding_tools_mcp.egg-info/dependency_links.txt +0 -0
- {coding_tools_mcp-0.1.5 → coding_tools_mcp-0.1.7}/coding_tools_mcp.egg-info/entry_points.txt +0 -0
- {coding_tools_mcp-0.1.5 → coding_tools_mcp-0.1.7}/coding_tools_mcp.egg-info/requires.txt +0 -0
- {coding_tools_mcp-0.1.5 → coding_tools_mcp-0.1.7}/coding_tools_mcp.egg-info/top_level.txt +0 -0
- {coding_tools_mcp-0.1.5 → coding_tools_mcp-0.1.7}/setup.cfg +0 -0
|
@@ -1,9 +1,46 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: coding-tools-mcp
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: Workspace-confined coding tools exposed as an MCP server.
|
|
5
5
|
Author: Coding Tools MCP Contributors
|
|
6
|
-
License
|
|
6
|
+
License: Coding Tools MCP Source-Available License v1.0
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2026 Coding Tools MCP Contributors.
|
|
9
|
+
All rights reserved except as expressly granted below.
|
|
10
|
+
|
|
11
|
+
1. Permitted Use
|
|
12
|
+
|
|
13
|
+
You may view, clone, build, run, and modify the Software solely for internal
|
|
14
|
+
evaluation, development, testing, and security review.
|
|
15
|
+
|
|
16
|
+
2. Restrictions
|
|
17
|
+
|
|
18
|
+
Without prior written permission from the copyright holders, you may not:
|
|
19
|
+
|
|
20
|
+
- distribute, publish, sublicense, sell, lease, or otherwise transfer the
|
|
21
|
+
Software or modified versions of the Software;
|
|
22
|
+
- provide the Software or modified versions as a hosted, managed, or
|
|
23
|
+
software-as-a-service offering for third parties;
|
|
24
|
+
- use the Software or modified versions for production commercial purposes;
|
|
25
|
+
- remove or alter copyright, license, or attribution notices;
|
|
26
|
+
- use the project name, trademarks, or branding to imply endorsement.
|
|
27
|
+
|
|
28
|
+
3. Contributions
|
|
29
|
+
|
|
30
|
+
Unless a separate written agreement says otherwise, any contribution submitted
|
|
31
|
+
to this project may be used by the copyright holders under this license and
|
|
32
|
+
under any future license chosen by the copyright holders.
|
|
33
|
+
|
|
34
|
+
4. No Warranty
|
|
35
|
+
|
|
36
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
37
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
38
|
+
FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
39
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER
|
|
40
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM,
|
|
41
|
+
OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
42
|
+
SOFTWARE.
|
|
43
|
+
|
|
7
44
|
Project-URL: Homepage, https://github.com/xyTom/coding-tools-mcp
|
|
8
45
|
Project-URL: Documentation, https://github.com/xyTom/coding-tools-mcp/tree/main/docs
|
|
9
46
|
Project-URL: Source, https://github.com/xyTom/coding-tools-mcp
|
|
@@ -18,7 +55,6 @@ Requires-Dist: ruff<0.16,>=0.15; extra == "dev"
|
|
|
18
55
|
Requires-Dist: typing_extensions>=4.12; extra == "dev"
|
|
19
56
|
Provides-Extra: image
|
|
20
57
|
Requires-Dist: Pillow>=10.0; extra == "image"
|
|
21
|
-
Dynamic: license-file
|
|
22
58
|
|
|
23
59
|
# Coding Tools MCP
|
|
24
60
|
|
|
@@ -37,12 +73,17 @@ It is not a prompt wrapper. It does not expose external agent accounts, memory,
|
|
|
37
73
|
- [MCP client configuration](docs/mcp-client-config.md)
|
|
38
74
|
- [Remote MCP](docs/remote-mcp.md)
|
|
39
75
|
- [Tools and schemas](docs/tools-and-schemas.md)
|
|
76
|
+
- [Permission modes](docs/permission-modes.md)
|
|
77
|
+
- [Exec command recipes](docs/exec-command-recipes.md)
|
|
78
|
+
- [Docker sandbox](docs/docker.md)
|
|
40
79
|
- [Security policy](SECURITY.md)
|
|
80
|
+
- [Security boundary](docs/security-boundary.md)
|
|
41
81
|
- [CI and test commands](docs/ci-and-tests.md)
|
|
42
82
|
- [Dogfood](docs/dogfood.md)
|
|
43
83
|
- [SWE-bench evaluation](docs/swe-bench.md)
|
|
44
84
|
- [Known limitations](docs/limitations.md)
|
|
45
85
|
- [Troubleshooting](docs/troubleshooting.md)
|
|
86
|
+
- [Exec troubleshooting](docs/troubleshooting-exec.md)
|
|
46
87
|
- [Competitive analysis](docs/competitive-analysis.md)
|
|
47
88
|
- Normative MCP runtime profile: [docs/profile-v0.1.md](docs/profile-v0.1.md)
|
|
48
89
|
|
|
@@ -89,15 +130,19 @@ uvx coding-tools-mcp --stdio --workspace /path/to/repo
|
|
|
89
130
|
If you are working from this checkout instead of a published package:
|
|
90
131
|
|
|
91
132
|
```bash
|
|
92
|
-
|
|
93
|
-
python -m pip install -e ".[dev]"
|
|
94
|
-
coding-tools-mcp --workspace /path/to/repo --host 127.0.0.1 --port 8765
|
|
133
|
+
make start
|
|
95
134
|
```
|
|
96
135
|
|
|
97
|
-
|
|
136
|
+
Pass a different workspace, host, port, or extra server flags with Make variables:
|
|
98
137
|
|
|
99
138
|
```bash
|
|
100
|
-
|
|
139
|
+
make start MCP_WORKSPACE=/path/to/repo MCP_PORT=8000 MCP_ARGS="--permission-mode trusted"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
If dependencies are missing, install the runtime in editable mode:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
python -m pip install -e ".[dev]"
|
|
101
146
|
```
|
|
102
147
|
|
|
103
148
|
HTTP endpoint:
|
|
@@ -106,6 +151,12 @@ HTTP endpoint:
|
|
|
106
151
|
http://127.0.0.1:8765/mcp
|
|
107
152
|
```
|
|
108
153
|
|
|
154
|
+
Install the optional image extra when you want `view_image` auto-resize support:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
python -m pip install -e ".[image]"
|
|
158
|
+
```
|
|
159
|
+
|
|
109
160
|
Stdio:
|
|
110
161
|
|
|
111
162
|
```bash
|
|
@@ -114,13 +165,25 @@ coding-tools-mcp --stdio --workspace /path/to/repo
|
|
|
114
165
|
|
|
115
166
|
Set `CODING_TOOLS_MCP_TRACE=1` to emit redacted JSON tool-call trace events to stderr for local debugging. Logs stay off stdout so stdio JSON-RPC remains clean.
|
|
116
167
|
|
|
117
|
-
|
|
168
|
+
By default, `exec_command` passes a core shell environment only. For local toolchains that depend on inherited environment variables, such as MSVC developer prompts, start with:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
CODING_TOOLS_MCP_SHELL_ENV_INHERIT=all coding-tools-mcp --workspace /path/to/repo
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
`inherit=all` still filters secret-looking and loader/startup variables unless dangerous mode is also enabled. For local development with dependency downloads, shell expansion, and inline interpreter snippets, use:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
coding-tools-mcp --permission-mode trusted --workspace /path/to/repo
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
`--allow-network` remains available as a compatibility flag when you only want to open network-looking commands. If your MCP client does not support permission elicitation and you explicitly want to disable `exec_command` permission gates inside an isolated container or VM, start with:
|
|
118
181
|
|
|
119
182
|
```bash
|
|
120
|
-
coding-tools-mcp --
|
|
183
|
+
coding-tools-mcp --permission-mode dangerous --workspace /path/to/repo
|
|
121
184
|
```
|
|
122
185
|
|
|
123
|
-
This
|
|
186
|
+
This disables `exec_command` permission gates such as network-looking commands, destructive command checks, shell expansion, inline scripts, and sensitive env checks. Workspace path boundaries for direct file tools still apply. `--dangerously-skip-all-permissions` remains as a compatibility alias.
|
|
124
187
|
|
|
125
188
|
## MCP Client Examples
|
|
126
189
|
|
|
@@ -184,7 +247,7 @@ scripts/tunnel.sh ngrok /path/to/repo
|
|
|
184
247
|
scripts/tunnel.sh devtunnel /path/to/repo
|
|
185
248
|
```
|
|
186
249
|
|
|
187
|
-
For clients that support custom headers, use bearer-token auth with `Authorization: Bearer <token>`. For MCP clients that speak OAuth 2.1 Authorization Code + PKCE, use `CODING_TOOLS_MCP_AUTH_MODE=oauth` with `scripts/tunnel.sh` (or `scripts/install.sh --auth-mode oauth`)
|
|
250
|
+
For clients that support custom headers, use bearer-token auth with `Authorization: Bearer <token>`. For MCP clients that speak OAuth 2.1 Authorization Code + PKCE, use `CODING_TOOLS_MCP_AUTH_MODE=oauth` with `scripts/tunnel.sh` (or `scripts/install.sh --auth-mode oauth`). The server can infer its OAuth issuer from the tunnel request URL, so one-shot tunnels like cloudflared work without setting `CODING_TOOLS_MCP_SERVER_URL` before startup; set it only when you want to pin a stable issuer. The script prints a generated OAuth password, accepts any non-empty client_id by default, and lets you opt into `CODING_TOOLS_MCP_OAUTH_CLIENT_ID`/`CODING_TOOLS_MCP_OAUTH_CLIENT_SECRET` only when you need to lock down a confidential client. Clients that cannot send custom bearer headers and do not speak OAuth should use anonymous `read-only` mode only for local/testing tunnels, or be placed behind an external auth proxy for production use.
|
|
188
251
|
|
|
189
252
|
See [docs/remote-mcp.md](docs/remote-mcp.md) for the exact modes and security notes.
|
|
190
253
|
|
|
@@ -226,9 +289,9 @@ For input/output schemas and result envelopes, see [docs/tools-and-schemas.md](d
|
|
|
226
289
|
|
|
227
290
|
The runtime binds one workspace root per server process. Paths are workspace-relative by default. Absolute paths, `..` traversal, and symlink escapes are rejected. Recursive listing/search excludes `.git`, `.reference`, `node_modules`, `target`, `dist`, build outputs, virtualenvs, and common caches by default.
|
|
228
291
|
|
|
229
|
-
`exec_command` runs under policy controls with workspace-bound cwd, timeout, output caps, sensitive-value and loader/startup environment rejection, destructive command checks, network-looking command checks, shell-expansion permission gates, indirect absolute-path checks, cancellation/kill cleanup, session deadline watchdogs, and bounded session buffers. On Linux hosts with Landlock support it also applies filesystem confinement; on Windows, macOS, or Linux hosts without Landlock, command results include a warning and external sandboxing is required before running untrusted commands. This is still not a complete OS/container sandbox; see [SECURITY.md](SECURITY.md).
|
|
292
|
+
`exec_command` runs under policy controls with workspace-bound cwd, configurable shell environment inheritance, timeout, output caps, sensitive-value and loader/startup environment rejection, destructive command checks, network-looking command checks, shell-expansion permission gates, indirect absolute-path checks, cancellation/kill cleanup, session deadline watchdogs, and bounded session buffers. On Linux hosts with Landlock support it also applies filesystem confinement; on Windows, macOS, or Linux hosts without Landlock, command results include a warning and external sandboxing is required before running untrusted commands. This is still not a complete OS/container sandbox; see [SECURITY.md](SECURITY.md).
|
|
230
293
|
|
|
231
|
-
`--
|
|
294
|
+
`--permission-mode safe` is the default. `--permission-mode trusted` opens local-development gates while keeping secret filtering and destructive-command checks. `--permission-mode dangerous` disables `exec_command` permission gates for operators who accept that risk inside an isolated runner. Do not use dangerous mode for untrusted workspaces or untrusted MCP clients.
|
|
232
295
|
|
|
233
296
|
## Compliance
|
|
234
297
|
|
|
@@ -1,25 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: coding-tools-mcp
|
|
3
|
-
Version: 0.1.5
|
|
4
|
-
Summary: Workspace-confined coding tools exposed as an MCP server.
|
|
5
|
-
Author: Coding Tools MCP Contributors
|
|
6
|
-
License-Expression: LicenseRef-Coding-Tools-MCP-Source-Available
|
|
7
|
-
Project-URL: Homepage, https://github.com/xyTom/coding-tools-mcp
|
|
8
|
-
Project-URL: Documentation, https://github.com/xyTom/coding-tools-mcp/tree/main/docs
|
|
9
|
-
Project-URL: Source, https://github.com/xyTom/coding-tools-mcp
|
|
10
|
-
Project-URL: Issues, https://github.com/xyTom/coding-tools-mcp/issues
|
|
11
|
-
Requires-Python: >=3.11
|
|
12
|
-
Description-Content-Type: text/markdown
|
|
13
|
-
License-File: LICENSE
|
|
14
|
-
Requires-Dist: PyJWT>=2.8
|
|
15
|
-
Provides-Extra: dev
|
|
16
|
-
Requires-Dist: mypy<2.2,>=2.1; extra == "dev"
|
|
17
|
-
Requires-Dist: ruff<0.16,>=0.15; extra == "dev"
|
|
18
|
-
Requires-Dist: typing_extensions>=4.12; extra == "dev"
|
|
19
|
-
Provides-Extra: image
|
|
20
|
-
Requires-Dist: Pillow>=10.0; extra == "image"
|
|
21
|
-
Dynamic: license-file
|
|
22
|
-
|
|
23
1
|
# Coding Tools MCP
|
|
24
2
|
|
|
25
3
|
Coding Tools MCP is a model-neutral coding-agent runtime MCP server. It exposes local coding primitives to any MCP client:
|
|
@@ -37,12 +15,17 @@ It is not a prompt wrapper. It does not expose external agent accounts, memory,
|
|
|
37
15
|
- [MCP client configuration](docs/mcp-client-config.md)
|
|
38
16
|
- [Remote MCP](docs/remote-mcp.md)
|
|
39
17
|
- [Tools and schemas](docs/tools-and-schemas.md)
|
|
18
|
+
- [Permission modes](docs/permission-modes.md)
|
|
19
|
+
- [Exec command recipes](docs/exec-command-recipes.md)
|
|
20
|
+
- [Docker sandbox](docs/docker.md)
|
|
40
21
|
- [Security policy](SECURITY.md)
|
|
22
|
+
- [Security boundary](docs/security-boundary.md)
|
|
41
23
|
- [CI and test commands](docs/ci-and-tests.md)
|
|
42
24
|
- [Dogfood](docs/dogfood.md)
|
|
43
25
|
- [SWE-bench evaluation](docs/swe-bench.md)
|
|
44
26
|
- [Known limitations](docs/limitations.md)
|
|
45
27
|
- [Troubleshooting](docs/troubleshooting.md)
|
|
28
|
+
- [Exec troubleshooting](docs/troubleshooting-exec.md)
|
|
46
29
|
- [Competitive analysis](docs/competitive-analysis.md)
|
|
47
30
|
- Normative MCP runtime profile: [docs/profile-v0.1.md](docs/profile-v0.1.md)
|
|
48
31
|
|
|
@@ -89,15 +72,19 @@ uvx coding-tools-mcp --stdio --workspace /path/to/repo
|
|
|
89
72
|
If you are working from this checkout instead of a published package:
|
|
90
73
|
|
|
91
74
|
```bash
|
|
92
|
-
|
|
93
|
-
python -m pip install -e ".[dev]"
|
|
94
|
-
coding-tools-mcp --workspace /path/to/repo --host 127.0.0.1 --port 8765
|
|
75
|
+
make start
|
|
95
76
|
```
|
|
96
77
|
|
|
97
|
-
|
|
78
|
+
Pass a different workspace, host, port, or extra server flags with Make variables:
|
|
98
79
|
|
|
99
80
|
```bash
|
|
100
|
-
|
|
81
|
+
make start MCP_WORKSPACE=/path/to/repo MCP_PORT=8000 MCP_ARGS="--permission-mode trusted"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
If dependencies are missing, install the runtime in editable mode:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
python -m pip install -e ".[dev]"
|
|
101
88
|
```
|
|
102
89
|
|
|
103
90
|
HTTP endpoint:
|
|
@@ -106,6 +93,12 @@ HTTP endpoint:
|
|
|
106
93
|
http://127.0.0.1:8765/mcp
|
|
107
94
|
```
|
|
108
95
|
|
|
96
|
+
Install the optional image extra when you want `view_image` auto-resize support:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
python -m pip install -e ".[image]"
|
|
100
|
+
```
|
|
101
|
+
|
|
109
102
|
Stdio:
|
|
110
103
|
|
|
111
104
|
```bash
|
|
@@ -114,13 +107,25 @@ coding-tools-mcp --stdio --workspace /path/to/repo
|
|
|
114
107
|
|
|
115
108
|
Set `CODING_TOOLS_MCP_TRACE=1` to emit redacted JSON tool-call trace events to stderr for local debugging. Logs stay off stdout so stdio JSON-RPC remains clean.
|
|
116
109
|
|
|
117
|
-
|
|
110
|
+
By default, `exec_command` passes a core shell environment only. For local toolchains that depend on inherited environment variables, such as MSVC developer prompts, start with:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
CODING_TOOLS_MCP_SHELL_ENV_INHERIT=all coding-tools-mcp --workspace /path/to/repo
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
`inherit=all` still filters secret-looking and loader/startup variables unless dangerous mode is also enabled. For local development with dependency downloads, shell expansion, and inline interpreter snippets, use:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
coding-tools-mcp --permission-mode trusted --workspace /path/to/repo
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
`--allow-network` remains available as a compatibility flag when you only want to open network-looking commands. If your MCP client does not support permission elicitation and you explicitly want to disable `exec_command` permission gates inside an isolated container or VM, start with:
|
|
118
123
|
|
|
119
124
|
```bash
|
|
120
|
-
coding-tools-mcp --
|
|
125
|
+
coding-tools-mcp --permission-mode dangerous --workspace /path/to/repo
|
|
121
126
|
```
|
|
122
127
|
|
|
123
|
-
This
|
|
128
|
+
This disables `exec_command` permission gates such as network-looking commands, destructive command checks, shell expansion, inline scripts, and sensitive env checks. Workspace path boundaries for direct file tools still apply. `--dangerously-skip-all-permissions` remains as a compatibility alias.
|
|
124
129
|
|
|
125
130
|
## MCP Client Examples
|
|
126
131
|
|
|
@@ -184,7 +189,7 @@ scripts/tunnel.sh ngrok /path/to/repo
|
|
|
184
189
|
scripts/tunnel.sh devtunnel /path/to/repo
|
|
185
190
|
```
|
|
186
191
|
|
|
187
|
-
For clients that support custom headers, use bearer-token auth with `Authorization: Bearer <token>`. For MCP clients that speak OAuth 2.1 Authorization Code + PKCE, use `CODING_TOOLS_MCP_AUTH_MODE=oauth` with `scripts/tunnel.sh` (or `scripts/install.sh --auth-mode oauth`)
|
|
192
|
+
For clients that support custom headers, use bearer-token auth with `Authorization: Bearer <token>`. For MCP clients that speak OAuth 2.1 Authorization Code + PKCE, use `CODING_TOOLS_MCP_AUTH_MODE=oauth` with `scripts/tunnel.sh` (or `scripts/install.sh --auth-mode oauth`). The server can infer its OAuth issuer from the tunnel request URL, so one-shot tunnels like cloudflared work without setting `CODING_TOOLS_MCP_SERVER_URL` before startup; set it only when you want to pin a stable issuer. The script prints a generated OAuth password, accepts any non-empty client_id by default, and lets you opt into `CODING_TOOLS_MCP_OAUTH_CLIENT_ID`/`CODING_TOOLS_MCP_OAUTH_CLIENT_SECRET` only when you need to lock down a confidential client. Clients that cannot send custom bearer headers and do not speak OAuth should use anonymous `read-only` mode only for local/testing tunnels, or be placed behind an external auth proxy for production use.
|
|
188
193
|
|
|
189
194
|
See [docs/remote-mcp.md](docs/remote-mcp.md) for the exact modes and security notes.
|
|
190
195
|
|
|
@@ -226,9 +231,9 @@ For input/output schemas and result envelopes, see [docs/tools-and-schemas.md](d
|
|
|
226
231
|
|
|
227
232
|
The runtime binds one workspace root per server process. Paths are workspace-relative by default. Absolute paths, `..` traversal, and symlink escapes are rejected. Recursive listing/search excludes `.git`, `.reference`, `node_modules`, `target`, `dist`, build outputs, virtualenvs, and common caches by default.
|
|
228
233
|
|
|
229
|
-
`exec_command` runs under policy controls with workspace-bound cwd, timeout, output caps, sensitive-value and loader/startup environment rejection, destructive command checks, network-looking command checks, shell-expansion permission gates, indirect absolute-path checks, cancellation/kill cleanup, session deadline watchdogs, and bounded session buffers. On Linux hosts with Landlock support it also applies filesystem confinement; on Windows, macOS, or Linux hosts without Landlock, command results include a warning and external sandboxing is required before running untrusted commands. This is still not a complete OS/container sandbox; see [SECURITY.md](SECURITY.md).
|
|
234
|
+
`exec_command` runs under policy controls with workspace-bound cwd, configurable shell environment inheritance, timeout, output caps, sensitive-value and loader/startup environment rejection, destructive command checks, network-looking command checks, shell-expansion permission gates, indirect absolute-path checks, cancellation/kill cleanup, session deadline watchdogs, and bounded session buffers. On Linux hosts with Landlock support it also applies filesystem confinement; on Windows, macOS, or Linux hosts without Landlock, command results include a warning and external sandboxing is required before running untrusted commands. This is still not a complete OS/container sandbox; see [SECURITY.md](SECURITY.md).
|
|
230
235
|
|
|
231
|
-
`--
|
|
236
|
+
`--permission-mode safe` is the default. `--permission-mode trusted` opens local-development gates while keeping secret filtering and destructive-command checks. `--permission-mode dangerous` disables `exec_command` permission gates for operators who accept that risk inside an isolated runner. Do not use dangerous mode for untrusted workspaces or untrusted MCP clients.
|
|
232
237
|
|
|
233
238
|
## Compliance
|
|
234
239
|
|