You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore(deps): bump x/net to v0.57.0, raise Go floor to 1.25.12, add govulncheck CI (#105)
* fix(sandbox): gate implicit Dockerfile.odek builds behind operator approval
A Dockerfile.odek in the working directory was built automatically with no
approval gate, while the analogous sandbox_image/sandbox_env project-config
knobs correctly require explicit operator approval. docker build executes
the repo-controlled Dockerfile's RUN instructions outside the sandbox threat
model (default capabilities, entire working directory readable as build
context), so merely running odek inside a malicious repository - including
odek serve, which sandboxes by default - granted host-adjacent code
execution and workspace exfiltration.
Changes:
- approveProjectSandbox now also requires approval for an implicit
Dockerfile.odek build (sandbox active, no explicit image, file present).
The approval is keyed on the Dockerfile content hash, so editing the file
invalidates a prior "trust this project" approval. The prompt warns that
building runs repo-controlled code with the whole working directory as
build context.
- setupSandbox enforces the approval non-interactively at build time
(env bypass, persisted trust, or in-process session approval), closing
the gap where a Dockerfile appears or changes after startup - e.g. a
serve-mode sandbox created per WebSocket connection, or a session
continuation that re-enables the sandbox.
- continueCmd now calls approveProjectSandbox like every other command;
previously odek continue applied project sandbox overrides without any
approval at all.
- docker build runs with --network=none by default so RUN steps cannot
fetch attacker payloads or exfiltrate build-context data over the
network; ODEK_SANDBOX_BUILD_NETWORK=1 (operator-only) opts back in for
legitimate networked builds such as RUN apk add.
Regression tests cover the requirement detection, non-TTY fail-closed
behavior, env bypass, once-vs-trust semantics, content-change invalidation
at both gates, build-time enforcement, and the --network=none default.
Docs updated: SANDBOXING.md, SECURITY.md (new section 18b), CONFIG.md,
AGENTS.md.
* chore(deps): bump x/net to v0.57.0, raise Go floor to 1.25.12, add govulncheck CI
Addresses two dependency-floor findings:
5. golang.org/x/net v0.54.0 carried ~7 published advisories (fixed in
v0.55.0/v0.56.0). None were reachable through odek's call graph, but the
constraint permitted the vulnerable version. Bumped to v0.57.0 (with
x/term v0.45.0 and x/sys v0.47.0 as required companions) and added a
govulncheck job to CI so future advisories fail the build.
6. go.mod declared go 1.25.0; scanning with early 1.25.x toolchains traces
22 reachable stdlib CVEs (crypto/tls, crypto/x509, net/http, net/url,
net, os, encoding/pem, encoding/asn1), fixed across Go 1.25.2-1.25.12.
Raised the go directive to 1.25.12 (verified as the latest 1.25.x patch
via go.dev/dl) and stated the minimum build toolchain in the README,
docs/DEVELOPMENT.md, and the test/release workflows.
Verified: govulncheck reports zero reachable module vulnerabilities after
the bump; the single remaining local stdlib report (GO-2026-5856) is fixed
in exactly 1.25.12 per the vuln DB and only appears because the local
scanning toolchain (go1.26.4) is one patch behind. Full test suite, vet,
and golangci-lint pass with the bumped dependencies.
Copy file name to clipboardExpand all lines: README.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@
5
5
One binary. One loop. Zero frameworks. ReAct (Reasoning + Acting) — think, therefore act.
6
6
7
7
```bash
8
-
# Install
8
+
# Install (requires Go ≥ 1.25.12 — see "Build requirements" below)
9
9
go install github.com/BackendStack21/odek/cmd/odek@latest
10
10
11
11
# Use (set ODEK_API_KEY, DEEPSEEK_API_KEY, or OPENAI_API_KEY)
@@ -14,6 +14,8 @@ odek run "How many lines in go.mod?"
14
14
# → 3 lines
15
15
```
16
16
17
+
**Build requirements:** Go **1.25.12 or newer**. The `go` directive in `go.mod` pins this floor because earlier 1.25.x toolchains ship reachable standard-library CVEs; CI additionally runs `govulncheck` on every push/PR so new advisories fail the build.
0 commit comments