Harden HTTP/network surfaces, add CI profiles, and polish dashboard controls#36
Open
shuv1337 wants to merge 6 commits intomojomast:mainfrom
Open
Harden HTTP/network surfaces, add CI profiles, and polish dashboard controls#36shuv1337 wants to merge 6 commits intomojomast:mainfrom
shuv1337 wants to merge 6 commits intomojomast:mainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This PR replays a fork’s hardening work on top of upstream/main, focusing on tightening HTTP request handling, strengthening network egress controls for the http.request tool, adding CI “profile” targets, and polishing dashboard UX/testing.
Changes:
- Hardened HTTP server behavior (strict JSON decoding, body caps, defensive timeouts), added
/v1/healthz, and extended run listing filters/sort. - Added private-network blocking controls for
http.requestvia DNS-resolved IP safety checks plus config plumbing/tests. - Introduced CI profile Make targets and updated GitHub Actions to run them; updated UI behavior and docs accordingly.
Reviewed changes
Copilot reviewed 21 out of 21 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| internal/tools/tools_test.go | Updates config.set safe-update test to include new network flag. |
| internal/tools/network_tools.go | Adds DNS/IP-based egress restrictions via custom HTTP transport for http.request. |
| internal/tools/network_safe_test.go | Unit tests for IP restriction helper logic. |
| internal/tools/config_tools.go | Enables config.get/config.set support for network.allow_private_networks. |
| internal/config/config.go | Extends NetworkConfig with allow_private_networks. |
| internal/config/config_test.go | Verifies default config disables private-network HTTP by default. |
| internal/channels/http/server.go | Adds /v1/healthz, strict JSON decoding + size limits, list filters/sort, defensive server timeouts, constant-time-ish token compare. |
| internal/channels/http/server_test.go | Adds coverage for new HTTP behaviors (healthz, sort/filter, strict JSON, caps, timeouts). |
| internal/channels/dashboard/ui/tests/e2e/qa_scripts.spec.js | Updates scheduler delete flow assertions for confirmation step. |
| internal/channels/dashboard/ui/tests/e2e/accessibility.spec.js | Adds e2e coverage for keyboard sidebar toggle behavior. |
| internal/channels/dashboard/ui/src/ui/layout.js | Adds Enter-key toggle behavior for pane resizers. |
| internal/channels/dashboard/ui/src/pages/scheduler.js | Adds delete confirmation UX for scheduler jobs. |
| docs/specs/CONTRACTS.md | Updates API contracts for strict JSON/caps, run filters/sort, and /v1/healthz. |
| docs/specs/CONFIG.md | Documents new network flags and HTTP hardening behavior. |
| docs/security/THREAT_MODEL.md | Updates threat model invariants and test expectations. |
| docs/USAGE.md | Refreshes HTTP API usage and filter/sort documentation. |
| docs/TOOL_CATALOG.md | Updates http.request notes to include private-network/DNS checks. |
| cmd/openclawssy/main.go | Tightens setup validation and adds loopback IP SANs to self-signed certs. |
| cmd/openclawssy/main_test.go | Adds tests for setup arg parsing and cert SANs. |
| Makefile | Adds CI profile targets and fmt-check gate; adds focused security test target. |
| .github/workflows/ci.yml | Switches CI to run Makefile CI profiles. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
shuv1337
added a commit
to shuv1337/openshuvussy
that referenced
this pull request
Feb 23, 2026
Collaborator
Author
|
Follow-up to Copilot review is complete in commit 60549cd. Applied updates:
No Copilot items were skipped. |
- Add Enter key support for sidebar resizers to toggle collapse/expand - Add two-step confirmation for scheduler job deletion - Add E2E accessibility test for keyboard navigation - Update scheduler E2E test for delete confirmation flow Implements PR #15 and PR #12 with clean branches. (cherry picked from commit bcd9cc1)
(cherry picked from commit 2c01d22)
(cherry picked from commit 323e811)
(cherry picked from commit 47a2b56)
60549cd to
d37f68d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replay of fork changes on top of current
upstream/mainwith a clean 5-commit stack:feat(ui): keyboard sidebar toggle and scheduler delete confirmationfeat(http): harden request handling and add health plus run filtersfeat(security): tighten setup validation and network egress policychore(ci): add quick/security/race profiles and fmt-check gatedocs: refresh API contracts and security guidanceWhat changed
Dashboard/UI
HTTP API hardening
DisallowUnknownFields) onPOST /v1/runsandPOST /v1/chat/messages.413responses.ReadHeaderTimeout,ReadTimeout,WriteTimeout,IdleTimeout).GET|HEAD /v1/healthz.GET /v1/runswithagent_idfilter andsort=created_desc|created_asc.Security/network policy
127.0.0.1,::1).network.allow_private_networksconfig flag.http.requesttransport:allow_localhosts=trueallow_private_networks=trueCI
ci-quickci-securityci-racefmt-checkDocs
Porting note
Upstream no longer has
internal/tools/network_safe.go. The DNS/IP safety logic from fork commit323e811was ported into the active network path ininternal/tools/network_tools.go.Validation
Executed on this branch:
go test ./...go test -race ./...make ci-quickmake ci-securitymake ci-race