Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

macOS sandbox blocks ps-backed recording process identity

Open
#2,376 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
52/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
ios, macos, node.js, typescript

Research direction

Start at the shared host-process module and trace readProcessStartTime and readProcessCommand into simctl recordVideo startup. On macOS, inspect the existing /bin/ps path and the required native probe, including bounded parsing and preserved argument boundaries. Done means sandbox, malformed-input, ownership, and recording start/stop tests pass with a playable artifact while non-macOS behavior remains unchanged.

Written by the indexing model from the issue text.

Description

Purpose

Allow iOS simulator recording to establish and verify process ownership inside a macOS sandbox that refuses execution of /bin/ps.

Reproduction

Run a synthetic Node child-process identity query under sandbox-exec -p '(version 1)(allow default)'. On macOS where /bin/ps is setuid, its execution is refused. readProcessStartTime and readProcessCommand return null, and recording startup can fail with simctl recordVideo did not expose a complete process identity.

The shared host-process module currently shells out to ps. A non-privileged native probe using proc_pidinfo(PROC_PIDTBSDINFO) and sysctl(KERN_PROCARGS2) can read the same owned child under this policy. PROC_PIDTBSDINFO needs a nonzero argument to include zombie processes.

Required behavior

  • Keep command/start-time ownership checks and fail closed when identity cannot be proven; do not replace ownership with PID liveness alone.
  • Bound native reads and preserve argument boundaries before rendering the existing command string.
  • Detect changed start identity, zombie state, permission refusal, and exited processes.
  • Package the native implementation without a global installation and keep non-macOS behavior unchanged.

Completion evidence

Real sandbox tests on synthetic owned children, malformed/bounded parsing tests, and iOS recording start/stop with a nonempty playable artifact. No benchmark transcripts or private run results are needed.

Dominant language
TypeScript
Stars
4.7k
Forks
304
Avg merge
11h 29m
Merged PRs (30d)
514

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from callstack/agent-device

All issues in callstack/agent-device

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.