@provos/ironcurtain 0.7.2 → 0.9.0
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/README.md +29 -100
- package/dist/auth/auth-command.d.ts +15 -0
- package/dist/auth/auth-command.js +424 -0
- package/dist/auth/auth-command.js.map +1 -0
- package/dist/auth/oauth-flow.d.ts +46 -0
- package/dist/auth/oauth-flow.js +279 -0
- package/dist/auth/oauth-flow.js.map +1 -0
- package/dist/auth/oauth-provider.d.ts +55 -0
- package/dist/auth/oauth-provider.js +73 -0
- package/dist/auth/oauth-provider.js.map +1 -0
- package/dist/auth/oauth-registry.d.ts +34 -0
- package/dist/auth/oauth-registry.js +69 -0
- package/dist/auth/oauth-registry.js.map +1 -0
- package/dist/auth/oauth-token-provider.d.ts +52 -0
- package/dist/auth/oauth-token-provider.js +159 -0
- package/dist/auth/oauth-token-provider.js.map +1 -0
- package/dist/auth/oauth-token-store.d.ts +30 -0
- package/dist/auth/oauth-token-store.js +93 -0
- package/dist/auth/oauth-token-store.js.map +1 -0
- package/dist/auth/providers/google-scopes.d.ts +35 -0
- package/dist/auth/providers/google-scopes.js +183 -0
- package/dist/auth/providers/google-scopes.js.map +1 -0
- package/dist/auth/providers/google.d.ts +2 -0
- package/dist/auth/providers/google.js +28 -0
- package/dist/auth/providers/google.js.map +1 -0
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/config/config-command.js +39 -1
- package/dist/config/config-command.js.map +1 -1
- package/dist/config/constitution-readonly.md +14 -11
- package/dist/config/constitution-user-base.md +15 -0
- package/dist/config/first-start.js +4 -1
- package/dist/config/first-start.js.map +1 -1
- package/dist/config/generated/test-scenarios.json +1 -1
- package/dist/config/generated/tool-annotations.json +10617 -296
- package/dist/config/generated-readonly/compiled-policy.json +787 -244
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-servers.json +31 -2
- package/dist/config/paths.d.ts +20 -0
- package/dist/config/paths.js +43 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/types.d.ts +8 -0
- package/dist/config/user-config.d.ts +29 -0
- package/dist/config/user-config.js +30 -0
- package/dist/config/user-config.js.map +1 -1
- package/dist/cron/constitution-generator.d.ts +2 -1
- package/dist/cron/constitution-generator.js +35 -36
- package/dist/cron/constitution-generator.js.map +1 -1
- package/dist/cron/headless-transport.d.ts +4 -0
- package/dist/cron/headless-transport.js +1 -1
- package/dist/cron/headless-transport.js.map +1 -1
- package/dist/daemon/ironcurtain-daemon.js +7 -1
- package/dist/daemon/ironcurtain-daemon.js.map +1 -1
- package/dist/docker/adapters/claude-code.js +32 -5
- package/dist/docker/adapters/claude-code.js.map +1 -1
- package/dist/docker/agent-adapter.d.ts +40 -0
- package/dist/docker/claude-md-seed.d.ts +27 -0
- package/dist/docker/claude-md-seed.js +42 -0
- package/dist/docker/claude-md-seed.js.map +1 -0
- package/dist/docker/docker-agent-session.d.ts +3 -1
- package/dist/docker/docker-agent-session.js +51 -28
- package/dist/docker/docker-agent-session.js.map +1 -1
- package/dist/docker/docker-infrastructure.d.ts +15 -1
- package/dist/docker/docker-infrastructure.js +105 -9
- package/dist/docker/docker-infrastructure.js.map +1 -1
- package/dist/docker/docker-manager.d.ts +2 -0
- package/dist/docker/docker-manager.js +9 -1
- package/dist/docker/docker-manager.js.map +1 -1
- package/dist/docker/mitm-proxy.d.ts +65 -0
- package/dist/docker/mitm-proxy.js +288 -31
- package/dist/docker/mitm-proxy.js.map +1 -1
- package/dist/docker/package-types.d.ts +127 -0
- package/dist/docker/package-types.js +8 -0
- package/dist/docker/package-types.js.map +1 -0
- package/dist/docker/package-validator.d.ts +41 -0
- package/dist/docker/package-validator.js +90 -0
- package/dist/docker/package-validator.js.map +1 -0
- package/dist/docker/platform.d.ts +6 -6
- package/dist/docker/platform.js +8 -6
- package/dist/docker/platform.js.map +1 -1
- package/dist/docker/proxy-tools.d.ts +80 -0
- package/dist/docker/proxy-tools.js +248 -0
- package/dist/docker/proxy-tools.js.map +1 -0
- package/dist/docker/pty-session.d.ts +15 -0
- package/dist/docker/pty-session.js +253 -73
- package/dist/docker/pty-session.js.map +1 -1
- package/dist/docker/pty-types.d.ts +28 -0
- package/dist/docker/pty-types.js +2 -0
- package/dist/docker/pty-types.js.map +1 -1
- package/dist/docker/registry-proxy.d.ts +142 -0
- package/dist/docker/registry-proxy.js +856 -0
- package/dist/docker/registry-proxy.js.map +1 -0
- package/dist/escalation/escalation-watcher.d.ts +3 -1
- package/dist/escalation/escalation-watcher.js +6 -2
- package/dist/escalation/escalation-watcher.js.map +1 -1
- package/dist/escalation/listener-command.js +24 -10
- package/dist/escalation/listener-command.js.map +1 -1
- package/dist/escalation/listener-lock.d.ts +5 -0
- package/dist/escalation/listener-lock.js +14 -0
- package/dist/escalation/listener-lock.js.map +1 -1
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/dist/memory/auto-save.d.ts +25 -0
- package/dist/memory/auto-save.js +89 -0
- package/dist/memory/auto-save.js.map +1 -0
- package/dist/memory/memory-annotations.d.ts +47 -0
- package/dist/memory/memory-annotations.js +87 -0
- package/dist/memory/memory-annotations.js.map +1 -0
- package/dist/memory/memory-prompt.d.ts +12 -0
- package/dist/memory/memory-prompt.js +20 -0
- package/dist/memory/memory-prompt.js.map +1 -0
- package/dist/memory/resolve-memory-path.d.ts +20 -0
- package/dist/memory/resolve-memory-path.js +30 -0
- package/dist/memory/resolve-memory-path.js.map +1 -0
- package/dist/mux/mux-app.d.ts +4 -0
- package/dist/mux/mux-app.js +246 -28
- package/dist/mux/mux-app.js.map +1 -1
- package/dist/mux/mux-command.d.ts +2 -2
- package/dist/mux/mux-command.js +14 -22
- package/dist/mux/mux-command.js.map +1 -1
- package/dist/mux/mux-escalation-manager.d.ts +9 -3
- package/dist/mux/mux-escalation-manager.js +69 -19
- package/dist/mux/mux-escalation-manager.js.map +1 -1
- package/dist/mux/mux-input-handler.d.ts +59 -3
- package/dist/mux/mux-input-handler.js +270 -32
- package/dist/mux/mux-input-handler.js.map +1 -1
- package/dist/mux/mux-renderer.d.ts +19 -1
- package/dist/mux/mux-renderer.js +466 -11
- package/dist/mux/mux-renderer.js.map +1 -1
- package/dist/mux/persona-scanner.d.ts +19 -0
- package/dist/mux/persona-scanner.js +53 -0
- package/dist/mux/persona-scanner.js.map +1 -0
- package/dist/mux/pty-bridge.d.ts +8 -0
- package/dist/mux/pty-bridge.js +19 -1
- package/dist/mux/pty-bridge.js.map +1 -1
- package/dist/mux/session-scanner.d.ts +18 -0
- package/dist/mux/session-scanner.js +65 -0
- package/dist/mux/session-scanner.js.map +1 -0
- package/dist/mux/types.d.ts +36 -1
- package/dist/mux/types.js +14 -1
- package/dist/mux/types.js.map +1 -1
- package/dist/persona/persona-command.js +130 -93
- package/dist/persona/persona-command.js.map +1 -1
- package/dist/persona/persona-prompt.d.ts +7 -7
- package/dist/persona/persona-prompt.js +14 -29
- package/dist/persona/persona-prompt.js.map +1 -1
- package/dist/persona/resolve.js +5 -2
- package/dist/persona/resolve.js.map +1 -1
- package/dist/pipeline/annotate.js +1 -7
- package/dist/pipeline/annotate.js.map +1 -1
- package/dist/pipeline/compile.d.ts +5 -2
- package/dist/pipeline/compile.js +23 -11
- package/dist/pipeline/compile.js.map +1 -1
- package/dist/pipeline/constitution-compiler.d.ts +302 -3
- package/dist/pipeline/constitution-compiler.js +285 -23
- package/dist/pipeline/constitution-compiler.js.map +1 -1
- package/dist/pipeline/generate-with-repair.d.ts +2 -2
- package/dist/pipeline/generate-with-repair.js +2 -2
- package/dist/pipeline/handwritten-scenarios.d.ts +20 -7
- package/dist/pipeline/handwritten-scenarios.js +20 -41
- package/dist/pipeline/handwritten-scenarios.js.map +1 -1
- package/dist/pipeline/list-resolver.d.ts +18 -20
- package/dist/pipeline/list-resolver.js +28 -36
- package/dist/pipeline/list-resolver.js.map +1 -1
- package/dist/pipeline/pipeline-runner.d.ts +102 -13
- package/dist/pipeline/pipeline-runner.js +497 -237
- package/dist/pipeline/pipeline-runner.js.map +1 -1
- package/dist/pipeline/pipeline-shared.d.ts +7 -9
- package/dist/pipeline/pipeline-shared.js +8 -18
- package/dist/pipeline/pipeline-shared.js.map +1 -1
- package/dist/pipeline/policy-verifier.d.ts +32 -5
- package/dist/pipeline/policy-verifier.js +137 -8
- package/dist/pipeline/policy-verifier.js.map +1 -1
- package/dist/pipeline/proxy-mcp-connections.d.ts +25 -0
- package/dist/pipeline/proxy-mcp-connections.js +121 -0
- package/dist/pipeline/proxy-mcp-connections.js.map +1 -0
- package/dist/pipeline/refresh-lists.js +21 -13
- package/dist/pipeline/refresh-lists.js.map +1 -1
- package/dist/pipeline/scenario-generator.d.ts +29 -49
- package/dist/pipeline/scenario-generator.js +180 -143
- package/dist/pipeline/scenario-generator.js.map +1 -1
- package/dist/pipeline/scenario-schema-validator.d.ts +51 -0
- package/dist/pipeline/scenario-schema-validator.js +132 -0
- package/dist/pipeline/scenario-schema-validator.js.map +1 -0
- package/dist/pipeline/tool-annotator.d.ts +9 -8
- package/dist/pipeline/tool-annotator.js +48 -95
- package/dist/pipeline/tool-annotator.js.map +1 -1
- package/dist/pipeline/types.d.ts +31 -24
- package/dist/sandbox/index.d.ts +26 -10
- package/dist/sandbox/index.js +151 -40
- package/dist/sandbox/index.js.map +1 -1
- package/dist/servers/fetch-server.js +10 -5
- package/dist/servers/fetch-server.js.map +1 -1
- package/dist/session/agent-session.d.ts +8 -20
- package/dist/session/agent-session.js +22 -70
- package/dist/session/agent-session.js.map +1 -1
- package/dist/session/base-transport.d.ts +17 -1
- package/dist/session/base-transport.js +25 -1
- package/dist/session/base-transport.js.map +1 -1
- package/dist/session/cli-transport.d.ts +5 -0
- package/dist/session/cli-transport.js +48 -25
- package/dist/session/cli-transport.js.map +1 -1
- package/dist/session/index.d.ts +25 -1
- package/dist/session/index.js +57 -8
- package/dist/session/index.js.map +1 -1
- package/dist/session/prompts.js +8 -9
- package/dist/session/prompts.js.map +1 -1
- package/dist/session/session-manager.d.ts +6 -0
- package/dist/session/session-manager.js +12 -0
- package/dist/session/session-manager.js.map +1 -1
- package/dist/session/types.d.ts +11 -1
- package/dist/session/types.js.map +1 -1
- package/dist/session/workspace-validation.js +37 -6
- package/dist/session/workspace-validation.js.map +1 -1
- package/dist/signal/signal-bot-daemon.js +24 -8
- package/dist/signal/signal-bot-daemon.js.map +1 -1
- package/dist/signal/signal-transport.d.ts +5 -2
- package/dist/signal/signal-transport.js +3 -3
- package/dist/signal/signal-transport.js.map +1 -1
- package/dist/trusted-process/approval-whitelist.d.ts +117 -0
- package/dist/trusted-process/approval-whitelist.js +237 -0
- package/dist/trusted-process/approval-whitelist.js.map +1 -0
- package/dist/trusted-process/gworkspace-credentials.d.ts +40 -0
- package/dist/trusted-process/gworkspace-credentials.js +45 -0
- package/dist/trusted-process/gworkspace-credentials.js.map +1 -0
- package/dist/trusted-process/index.d.ts +11 -1
- package/dist/trusted-process/index.js +83 -53
- package/dist/trusted-process/index.js.map +1 -1
- package/dist/trusted-process/mcp-proxy-server.d.ts +23 -0
- package/dist/trusted-process/mcp-proxy-server.js +409 -94
- package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
- package/dist/trusted-process/policy-engine.d.ts +12 -3
- package/dist/trusted-process/policy-engine.js +33 -23
- package/dist/trusted-process/policy-engine.js.map +1 -1
- package/dist/trusted-process/policy-types.d.ts +17 -0
- package/dist/trusted-process/sandbox-integration.d.ts +23 -0
- package/dist/trusted-process/sandbox-integration.js +115 -3
- package/dist/trusted-process/sandbox-integration.js.map +1 -1
- package/dist/trusted-process/token-file-refresher.d.ts +69 -0
- package/dist/trusted-process/token-file-refresher.js +120 -0
- package/dist/trusted-process/token-file-refresher.js.map +1 -0
- package/dist/types/argument-roles.d.ts +7 -1
- package/dist/types/argument-roles.js +50 -0
- package/dist/types/argument-roles.js.map +1 -1
- package/dist/types/audit.d.ts +11 -0
- package/docker/Dockerfile.base +22 -0
- package/docker/Dockerfile.base.arm64 +44 -4
- package/docker/Dockerfile.claude-code +2 -2
- package/docker/entrypoint-claude-code.sh +24 -6
- package/package.json +8 -2
- package/src/config/constitution-user-base.md +15 -0
- package/src/config/generated/test-scenarios.json +1 -1
- package/src/config/generated/tool-annotations.json +10617 -296
- package/src/config/mcp-servers.json +31 -2
- package/dist/pipeline/mcp-connections.d.ts +0 -16
- package/dist/pipeline/mcp-connections.js +0 -61
- package/dist/pipeline/mcp-connections.js.map +0 -1
|
@@ -13,11 +13,11 @@ USER codespace
|
|
|
13
13
|
|
|
14
14
|
# Pre-seed Claude Code config so it skips interactive prompts:
|
|
15
15
|
# - .claude.json: marks onboarding complete (skips login flow)
|
|
16
|
-
# - .claude/settings.json: accepts bypass-permissions mode
|
|
16
|
+
# - .claude/settings.json: accepts bypass-permissions mode, skips web fetch preflight
|
|
17
17
|
RUN mkdir -p /home/codespace/.claude && \
|
|
18
18
|
echo '{"hasCompletedOnboarding":true,"numStartups":1,"projects":{"/workspace":{"allowedTools":[],"hasTrustDialogAccepted":true}}}' \
|
|
19
19
|
> /home/codespace/.claude.json && \
|
|
20
|
-
echo '{"permissions":{"allow":[],"deny":[]},"skipDangerousModePermissionPrompt":true}' \
|
|
20
|
+
echo '{"permissions":{"allow":[],"deny":[]},"skipDangerousModePermissionPrompt":true,"skipWebFetchPreflight":true}' \
|
|
21
21
|
> /home/codespace/.claude/settings.json
|
|
22
22
|
|
|
23
23
|
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
|
@@ -13,7 +13,13 @@ fi
|
|
|
13
13
|
|
|
14
14
|
# Pre-seed .claude.json so Claude Code skips onboarding, trusts /workspace,
|
|
15
15
|
# and doesn't prompt for API key approval.
|
|
16
|
-
|
|
16
|
+
# On resume, restore the previous session's .claude.json from the state dir
|
|
17
|
+
# (it contains conversation metadata that --continue needs).
|
|
18
|
+
SAVED_CLAUDE_JSON="$HOME/.claude/.claude.json.saved"
|
|
19
|
+
if [ -n "$IRONCURTAIN_RESUME_FLAGS" ] && [ -f "$SAVED_CLAUDE_JSON" ]; then
|
|
20
|
+
cp "$SAVED_CLAUDE_JSON" "$HOME/.claude.json"
|
|
21
|
+
else
|
|
22
|
+
cat > "$HOME/.claude.json" <<'EOJSON'
|
|
17
23
|
{
|
|
18
24
|
"hasCompletedOnboarding": true,
|
|
19
25
|
"numStartups": 1,
|
|
@@ -25,19 +31,23 @@ cat > "$HOME/.claude.json" <<'EOJSON'
|
|
|
25
31
|
}
|
|
26
32
|
}
|
|
27
33
|
EOJSON
|
|
34
|
+
fi
|
|
28
35
|
|
|
29
36
|
# Configure settings.json:
|
|
30
37
|
# - skipDangerousModePermissionPrompt: suppresses the bypass-permissions warning
|
|
38
|
+
# - skipWebFetchPreflight: bypasses domain safety check that fails in proxied env
|
|
39
|
+
# - env.HTTPS_PROXY: ensures Claude Code's WebFetch routes through the MITM proxy
|
|
31
40
|
# Auth mode determines how Claude Code gets its API credentials:
|
|
32
41
|
# - OAuth mode (CLAUDE_CODE_OAUTH_TOKEN set): Claude Code reads the token from
|
|
33
42
|
# this env var directly -- no apiKeyHelper needed.
|
|
34
43
|
# - API key mode: apiKeyHelper echoes the fake key so Claude Code skips the
|
|
35
44
|
# custom API key approval dialog entirely.
|
|
45
|
+
# Always written (even on resume) because auth mode is runtime-specific.
|
|
36
46
|
mkdir -p "$HOME/.claude"
|
|
37
47
|
|
|
38
48
|
if [ -n "$CLAUDE_CODE_OAUTH_TOKEN" ]; then
|
|
39
49
|
# OAuth mode: Claude Code reads the token from env var directly.
|
|
40
|
-
cat > "$HOME/.claude/settings.json" <<
|
|
50
|
+
cat > "$HOME/.claude/settings.json" <<EOSETTINGS
|
|
41
51
|
{
|
|
42
52
|
"permissions": {
|
|
43
53
|
"allow": [],
|
|
@@ -45,12 +55,16 @@ if [ -n "$CLAUDE_CODE_OAUTH_TOKEN" ]; then
|
|
|
45
55
|
"additionalDirectories": [],
|
|
46
56
|
"defaultMode": "bypassPermissions"
|
|
47
57
|
},
|
|
48
|
-
"skipDangerousModePermissionPrompt": true
|
|
58
|
+
"skipDangerousModePermissionPrompt": true,
|
|
59
|
+
"skipWebFetchPreflight": true,
|
|
60
|
+
"env": {
|
|
61
|
+
"HTTPS_PROXY": "${HTTPS_PROXY}"
|
|
62
|
+
}
|
|
49
63
|
}
|
|
50
64
|
EOSETTINGS
|
|
51
65
|
else
|
|
52
66
|
# API key mode: apiKeyHelper echoes the fake key at runtime.
|
|
53
|
-
cat > "$HOME/.claude/settings.json" <<
|
|
67
|
+
cat > "$HOME/.claude/settings.json" <<EOSETTINGS
|
|
54
68
|
{
|
|
55
69
|
"permissions": {
|
|
56
70
|
"allow": [],
|
|
@@ -58,8 +72,12 @@ else
|
|
|
58
72
|
"additionalDirectories": [],
|
|
59
73
|
"defaultMode": "bypassPermissions"
|
|
60
74
|
},
|
|
61
|
-
"apiKeyHelper": "echo
|
|
62
|
-
"skipDangerousModePermissionPrompt": true
|
|
75
|
+
"apiKeyHelper": "echo \$IRONCURTAIN_API_KEY",
|
|
76
|
+
"skipDangerousModePermissionPrompt": true,
|
|
77
|
+
"skipWebFetchPreflight": true,
|
|
78
|
+
"env": {
|
|
79
|
+
"HTTPS_PROXY": "${HTTPS_PROXY}"
|
|
80
|
+
}
|
|
63
81
|
}
|
|
64
82
|
EOSETTINGS
|
|
65
83
|
fi
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@provos/ironcurtain",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Secure agent runtime with trusted process mediation",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -25,6 +25,9 @@
|
|
|
25
25
|
"trusted-process",
|
|
26
26
|
"model-context-protocol"
|
|
27
27
|
],
|
|
28
|
+
"workspaces": [
|
|
29
|
+
"packages/*"
|
|
30
|
+
],
|
|
28
31
|
"engines": {
|
|
29
32
|
"node": ">=22.0.0 <26"
|
|
30
33
|
},
|
|
@@ -49,6 +52,7 @@
|
|
|
49
52
|
"start": "tsx src/cli.ts start",
|
|
50
53
|
"annotate-tools": "tsx src/cli.ts annotate-tools",
|
|
51
54
|
"compile-policy": "tsx src/cli.ts compile-policy",
|
|
55
|
+
"compile-policy:readonly": "tsx src/cli.ts compile-policy --no-mcp --constitution src/config/constitution-readonly.md --output-dir src/config/generated-readonly",
|
|
52
56
|
"customize-policy": "tsx src/cli.ts customize-policy",
|
|
53
57
|
"bot": "tsx src/cli.ts bot",
|
|
54
58
|
"config": "tsx src/cli.ts config",
|
|
@@ -66,11 +70,12 @@
|
|
|
66
70
|
"@ai-sdk/anthropic": "^3.0.49",
|
|
67
71
|
"@ai-sdk/google": "^3.0.33",
|
|
68
72
|
"@ai-sdk/openai": "^3.0.36",
|
|
69
|
-
"@anthropic-ai/sandbox-runtime": "^0.0.
|
|
73
|
+
"@anthropic-ai/sandbox-runtime": "^0.0.42",
|
|
70
74
|
"@clack/prompts": "^1.0.1",
|
|
71
75
|
"@cyanheads/git-mcp-server": "^2.8.4",
|
|
72
76
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
73
77
|
"@mozilla/readability": "^0.6.0",
|
|
78
|
+
"@provos/memory-mcp-server": "^0.1.3",
|
|
74
79
|
"@utcp/code-mode": "^1.2.11",
|
|
75
80
|
"@utcp/mcp": "^1.1.1",
|
|
76
81
|
"@xterm/headless": "^6.0.0",
|
|
@@ -81,6 +86,7 @@
|
|
|
81
86
|
"jsdom": "^28.1.0",
|
|
82
87
|
"marked": "^15.0.12",
|
|
83
88
|
"marked-terminal": "^7.3.0",
|
|
89
|
+
"minimatch": "^10.2.1",
|
|
84
90
|
"node-forge": "^1.3.3",
|
|
85
91
|
"ora": "^9.3.0",
|
|
86
92
|
"shell-quote": "^1.8.3",
|
|
@@ -11,3 +11,18 @@
|
|
|
11
11
|
- The agent may fetch web content from popular development sites.
|
|
12
12
|
- The agent may freely list, search, and read GitHub resources (issues, pull requests, repositories, code, comments, reviews) without human approval.
|
|
13
13
|
- Creating, updating, closing, or deleting GitHub resources (issues, PRs, comments, reviews, branches, files, repositories) requires human approval.
|
|
14
|
+
|
|
15
|
+
## Google Workspace
|
|
16
|
+
|
|
17
|
+
### Principle: Read-First, Write-with-Approval
|
|
18
|
+
- Reading emails, calendar events, drive files, docs, and sheets is generally safe.
|
|
19
|
+
- Sending emails, creating/modifying calendar events, and editing documents require human approval.
|
|
20
|
+
- Deleting emails, calendar events, or Drive files is a destructive operation requiring explicit approval.
|
|
21
|
+
|
|
22
|
+
### Principle: No Bulk Operations Without Oversight
|
|
23
|
+
- Batch operations (e.g., batch_modify_labels, batch email operations) affect many items simultaneously.
|
|
24
|
+
- These should be escalated regardless of the individual operation's safety level.
|
|
25
|
+
|
|
26
|
+
### Principle: Respect Privacy Boundaries
|
|
27
|
+
- The agent should not read private calendar details or email content without clear task relevance.
|
|
28
|
+
- Sharing permissions on Drive files (drive_share_file) must always be escalated.
|
|
@@ -262,7 +262,7 @@
|
|
|
262
262
|
"arguments": {}
|
|
263
263
|
},
|
|
264
264
|
"expectedDecision": "allow",
|
|
265
|
-
"reasoning": "list_allowed_directories
|
|
265
|
+
"reasoning": "list_allowed_directories requires no path arguments, so it is always permitted.",
|
|
266
266
|
"source": "generated"
|
|
267
267
|
},
|
|
268
268
|
{
|