fix(ios): classify TLS fingerprint timeouts - #98429
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 1, 2026, 1:47 AM ET / 05:47 UTC. Summary PR surface: Other +316. Total +316 across 7 files. Reproducibility: yes. at source level. Current main collapses nil TLS fingerprint probing into generic TLS failure text, and the PR body supplies live simulator output for both the trust prompt and stalled TLS timeout paths; I did not run simulator tests in this read-only review. Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land the controller-owned iOS TLS classification and alert-stack fix after maintainer trust-path review is satisfied; no automated repair is indicated from this review. Do we have a high-confidence way to reproduce the issue? Yes, at source level. Current main collapses nil TLS fingerprint probing into generic TLS failure text, and the PR body supplies live simulator output for both the trust prompt and stalled TLS timeout paths; I did not run simulator tests in this read-only review. Is this the best way to solve the issue? Yes. Moving reachability and TLS-fingerprint classification into AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 2c7e989686ba. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Other +316. Total +316 across 7 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
dd9a96f to
f2a72a0
Compare
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
* fix(ios): classify gateway TLS fingerprint timeouts * Add discovered TLS trust regression test
* fix(ios): classify gateway TLS fingerprint timeouts * Add discovered TLS trust regression test
* fix(ios): classify gateway TLS fingerprint timeouts * Add discovered TLS trust regression test (cherry picked from commit 0c7bac3)
* fix(ios): classify gateway TLS fingerprint timeouts * Add discovered TLS trust regression test (cherry picked from commit 0c7bac3)
Related: OpenClaw claim report ACTIONABLE-003-C2
What Problem This Solves
Fixes an issue where iOS users connecting to a manual HTTPS gateway could get stuck behind generic connection failure behavior when the gateway accepts TCP but never completes enough TLS handshake work to produce a certificate fingerprint.
This also fixes the root alert-stack breakage where the gateway trust prompt could be prepared but not presented from the app's main root UI.
Why This Change Was Made
The iOS gateway connector now classifies TLS fingerprint probing outcomes separately from plain TCP reachability, including a bounded TLS fingerprint timeout for secure endpoints that stall after TCP connect. The trust prompt presentation was also moved to SwiftUI's current
alert(_:isPresented:presenting:actions:message:)API so it survives the root prompt stack alongside deep-link prompts.The change keeps the timeout decision inside the gateway connection controller instead of adding settings-screen heuristics or widening generic connection fallbacks.
User Impact
Users now see a specific TLS fingerprint timeout message when a secure gateway endpoint is reachable but does not complete fingerprint verification in time. First-time TLS connections can again present the trust prompt from the main iOS app shell, so users can inspect and trust the gateway fingerprint instead of seeing a silent or misleading connection failure.
Evidence
AI-assisted PR.
.agents/skills/autoreview/scripts/autoreview --mode localreported no accepted/actionable findings before commit.origin/main:xcodebuild test -project apps/ios/OpenClaw.xcodeproj -scheme OpenClaw -destination 'platform=iOS Simulator,name=iPhone 17,OS=26.5' -only-testing:OpenClawTests/SwiftUIRenderSmokeTests -only-testing:OpenClawTests/RootTabsSourceGuardTests -only-testing:OpenClawTests/GatewayConnectionSecurityTestspassed 55 tests.127.0.0.1:29664produced theTrust this gateway?prompt with SHA-256 fingerprint andTrust and connect/Cancelactions.127.0.0.1:29664producedTLS fingerprint verification timed out for 127.0.0.1:29664. Secure endpoint was reached, but TLS did not finish in time.origin/main, regenerated the ignored local Xcode project withxcodegen generateand confirmed the branch builds withxcodebuild build -project apps/ios/OpenClaw.xcodeproj -scheme OpenClaw -destination 'platform=iOS Simulator,name=iPhone 17 Pro,OS=26.5'.xcodebuild test -project OpenClaw.xcodeproj -scheme OpenClaw -destination 'platform=iOS Simulator,name=iPhone 17 Pro,OS=26.5' -only-testing:OpenClawTests/GatewayConnectionSecurityTestspassed 12 tests.waiting for workers to materialize,Waiting for -runningDidFinish call). No test assertions failed in that run.swiftlint lint Sources/Design/SettingsProTabActions.swiftpassed with 0 violations.f2a72a02ef295a2c60990b49086c9264974e8703:ios-build,macos-swift, andScan iOS dead codepassed.