Description
I diagnosed two separate ADE issues.
Issue 1: Native iOS stream is marked ready but drawer does not attach as a client
Environment:
- ADE CLI via desktop socket
- Device:
iPhone 17 Pro, UDID 95F41FEE-EA2F-4E4B-AF2B-1FC974ABE0AE
- Runtime:
iOS 26.2
- App:
com.arul.pearl
- Native backend:
iosurface-indigo
Evidence:
ade --socket ios-sim status --json reports iosurface_indigo.available = true.
ade --socket ios-sim snapshot --text works: screenshot provider is ok.
ade --socket ios-sim live-start --fps 30 --json starts successfully:
running: true
backend: iosurface-indigo
streamUrl: http://127.0.0.1:63813/ios-simulator/stream.mjpg
- Direct
curl to that streamUrl receives valid MJPEG bytes:
- about
137K
- multipart boundary
--ade-ios-simulator-frame
Content-Type: image/jpeg
- After ~30 seconds:
running: false
lastError: "IOSurface helper stopped after 30s with no active stream clients or input."
This points to a drawer/client bug, not an app or simulator bug. The native stream helper starts and can serve a JPEG frame, but ADE’s drawer is apparently not connecting to, or not holding open, the stream client.
Important comparison:
ade --socket ios-sim preview-start --fps 2 --text using simctl-screenshot-poll keeps producing frames continuously.
- It reached
frames: 151 before I stopped it.
- So screenshot capture and fallback streaming are healthy. The broken path is specifically native IOSurface streaming plus drawer client lifecycle.
Issue 2: Launch target discovery/dropdown behavior is confusing
Observed:
- Launching a built
.app directly can launch the app, but did not make the drawer’s manual app dropdown useful.
- Launching by project/scheme worked better:
ade --socket ios-sim launch \
--project Pearl.xcodeproj \
--scheme Pearl \
--udid 95F41FEE-EA2F-4E4B-AF2B-1FC974ABE0AE \
--project-root /Users/arul/Pearl \
--mode live \
--text
After that, activeSession was correctly set to Pearl. But apps --device still surfaced Pearl mainly as a built DerivedData target, not as a clear project/scheme target. For a user, this looks like “No launchable app found” until ADE has built/cached something.
Issue 3: Permission prompts despite “full access mode”
This is separate from iOS sim. The Codex runtime in this session is enforcing workspace-write, not full access. That is why ADE socket access and Xcode/CoreSimulator access triggered permission prompts.
Likely report wording:
ADE UI/session appears to advertise full access, but the Codex subprocess receives/enforces workspace-write, causing require_escalated prompts for ADE socket and simulator/Xcode operations. Prior ADE Codex integration notes suggest sandbox/approval policy propagation has been fragile across thread/start, thread/resume, and turn/start.
Root Cause Hypothesis
- Native stream bug: ADE drawer is not attaching to the
iosurface-indigo MJPEG stream URL, or closes the client immediately, so the helper exits after the no-client timeout.
- Launch target UX bug: drawer target discovery does not reliably show project/scheme launchables for a new greenfield Xcode project until ADE has built/cached the app.
- Permission bug: ADE full-access UI state is not being propagated into the actual Codex runtime sandbox/approval policy.
I stopped the diagnostic polling stream I started. I did not change app code during this diagnosis.
Steps to Reproduce
Not provided.
Expected Behavior
Not provided.
Actual Behavior
Not provided.
Environment
ADE version: 1.1.10
Platform: darwin arm64
Electron: 40.8.2
Project: Pearl
Project base ref: main
Selected lane: Primary
Lane branch: arul_iter0
Lane base ref: main
Lane status: clean worktree
HEAD commit: acfe014 Initial commit
Description
I diagnosed two separate ADE issues.
Issue 1: Native iOS stream is marked ready but drawer does not attach as a client
Environment:
iPhone 17 Pro, UDID95F41FEE-EA2F-4E4B-AF2B-1FC974ABE0AEiOS 26.2com.arul.pearliosurface-indigoEvidence:
ade --socket ios-sim status --jsonreportsiosurface_indigo.available = true.ade --socket ios-sim snapshot --textworks: screenshot provider isok.ade --socket ios-sim live-start --fps 30 --jsonstarts successfully:running: truebackend: iosurface-indigostreamUrl: http://127.0.0.1:63813/ios-simulator/stream.mjpgcurlto thatstreamUrlreceives valid MJPEG bytes:137K--ade-ios-simulator-frameContent-Type: image/jpegrunning: falselastError: "IOSurface helper stopped after 30s with no active stream clients or input."This points to a drawer/client bug, not an app or simulator bug. The native stream helper starts and can serve a JPEG frame, but ADE’s drawer is apparently not connecting to, or not holding open, the stream client.
Important comparison:
ade --socket ios-sim preview-start --fps 2 --textusingsimctl-screenshot-pollkeeps producing frames continuously.frames: 151before I stopped it.Issue 2: Launch target discovery/dropdown behavior is confusing
Observed:
.appdirectly can launch the app, but did not make the drawer’s manual app dropdown useful.After that,
activeSessionwas correctly set to Pearl. Butapps --devicestill surfaced Pearl mainly as a built DerivedData target, not as a clear project/scheme target. For a user, this looks like “No launchable app found” until ADE has built/cached something.Issue 3: Permission prompts despite “full access mode”
This is separate from iOS sim. The Codex runtime in this session is enforcing
workspace-write, not full access. That is why ADE socket access and Xcode/CoreSimulator access triggered permission prompts.Likely report wording:
Root Cause Hypothesis
iosurface-indigoMJPEG stream URL, or closes the client immediately, so the helper exits after the no-client timeout.I stopped the diagnostic polling stream I started. I did not change app code during this diagnosis.
Steps to Reproduce
Not provided.
Expected Behavior
Not provided.
Actual Behavior
Not provided.
Environment
ADE version: 1.1.10
Platform: darwin arm64
Electron: 40.8.2
Project: Pearl
Project base ref: main
Selected lane: Primary
Lane branch: arul_iter0
Lane base ref: main
Lane status: clean worktree
HEAD commit: acfe014 Initial commit