github.com/danielpaulus/go-ios
v1.3.2
#757 most downloaded on Go modules
danielpaulus/go-ios
What this package is like to depend on
Last release 9 days ago
14 Aug 2026
Release timing varies
gaps range from 8 days to 2 months
Rarely documented
notes for 10 of 225 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
462 releases · first in 2019
134 releases in the last 12 months
see the full history below
Release timeline
462 releases · Sep 2019 to Aug 2026Releases
latest 60 of 462-
v1.3.3-0.20260814171733-3ebc297691a914 Aug 2026 pre-releaseNothing published for this version
-
v1.3.3-0.20260813102922-805bab51251313 Aug 2026 pre-releaseNothing published for this version
-
v1.3.3-0.20260812123311-9c9fa2a073d612 Aug 2026 pre-releaseNothing published for this version
-
v1.3.3-0.20260812021214-7589c3bc9c4112 Aug 2026 pre-releaseNothing published for this version
-
v1.3.3-0.20260811170932-688883c8030411 Aug 2026 pre-releaseNothing published for this version
-
v1.3.211 Aug 2026Release notes
Open source →Fixes
- accessibility: the AX inspector no longer deadlocks the DTX connection.
hostInspectorMonitoredEventTypeChangedevents are now consumed continuously, so registering the inspector can't block the connection's single reader goroutine (which would silently stall every channel on that connection). Also addsDisableSelectionMode(). Thanks to @sakhisheikh for the fix (#823). - installationproxy:
browseApps(BrowseAllApps/BrowseUserApps) now bounds its receive loop. It aborts with a clear error after a sane maximum number of chunks instead of accumulating unbounded memory when a device never returnsStatus: "Complete", fixing a potential multi-gigabyte heap growth on misbehaving devices. Thanks to @UMR-Haozi for the thorough report (#818).
- accessibility: the AX inspector no longer deadlocks the DTX connection.
-
v1.3.2-0.20260811162713-a6dff0a2348c11 Aug 2026 pre-releaseNothing published for this version
-
v1.3.111 Aug 2026Release notes
Open source →Fixes
- syslog:
ios syslognow decodes BSD vis escapes, so non-ASCII log text (e.g. CJK/Chinese) renders correctly instead of appearing as\M-escape sequences (#687). - image mount:
ios image autoresolves an already-downloaded developer disk image from the base directory before making any network request, so it works fully offline; DDI selection is now deterministic and cached image paths are contained within the base directory (#644). - fsync / house_arrest: falls back to
VendDocumentswhenVendContaineris denied, soios fsync --app=<bundleID>now works on App Store apps that previously failed withInstallationLookupFailed(#593). - tunnel: tunnel/RSD TCP dials are now bounded by a 15s timeout, so an unreachable device fails fast instead of hanging for ~135s (#764).
- tunnel (Windows/macOS): interface-setup errors now include the actual
netsh/ifconfigoutput, the command that was run, and its exit status, plus an elevation hint and a suggestion to use--userspace(#545). - CLI dispatch:
ios webinspector launch <url>now runs the webinspector launcher instead of being misrouted toios launch; related command-dispatch collisions were also hardened (#769).
Improvements
- help:
ios help pcapnow includes practical usage examples, and the help catalog gained anexamplesfield. Thanks to @sssppp-cooled for the contribution (#816).
Chores
- Removed stray
proxy.mobileconfigfiles from the repository root so they no longer leak into release assets (#731).
- syslog:
-
v1.3.1-0.20260810160726-f282f78ed59610 Aug 2026 pre-releaseNothing published for this version
-
v1.3.010 Aug 2026Release notes
Open source →Security & stability
- Two rounds of hardening against malformed/hostile input (#791, #792): eliminated panics, unbounded allocations, and hangs across the untrusted-input surface — plist/usbmux framing, XPC, AFC, the DTX codec, testmanagerd, and NSKeyedArchiver (including an uncatchable stack overflow from cyclic archives).
- REST API authentication (BREAKING). The REST API no longer runs open by default: set
GO_IOS_API_KEY=<token>(enforced as a bearer token on/api/v1) or pass--disable-authto run without it. If neither is provided, the server refuses to start. - REST API: rejected
basedirpath traversal, capped image uploads, and fixed a single-request server kill (/notifications) and a 100% CPU streaming busy-loop. - Enabled TLS verification for the Apple TSS endpoint; contained AFC pull path traversal.
- Dependency/toolchain CVE fixes: go-pkcs12 → v0.7.2, toolchain → go1.26.5, x/crypto → v0.52.0, x/net → v0.55.0, and a quic-go CVE upgrade.
Features
- MDM subcommands for passcode and Screen Time management, a read-only security-info query, and unlock-token fetch (#778).
- Pasteboard service control — get/set the device clipboard (#773).
- WDA/XCUITest now run on iOS 14–16 via an in-memory test config (#790).
Fixes
- pair: report locked devices instead of false success; fix a PairSupervised panic when the device is passcode-locked.
- rsd: fail fast when a service is missing from the RSD list; export
RsdPortForService; hint at outdated DDIs (#787). - imagemounter: validate plist replies and the UnmountImage reply; fix silent personalized-image mount failures (#788).
-
v1.2.2-0.20260805152531-ebec9a0b076c05 Aug 2026 pre-releaseNothing published for this version
-
v1.2.2-0.20260805150335-20b4f98f740205 Aug 2026 pre-releaseNothing published for this version
-
v1.2.2-0.20260804145331-54fc58676de104 Aug 2026 pre-releaseNothing published for this version
-
v1.2.2-0.20260803203638-6122b02a65c403 Aug 2026 pre-releaseNothing published for this version
-
v1.2.103 Aug 2026Release notes
Open source →- fix(imagemounter): derive EPRO/ESEC from RestoreRequestRules for TSS #781
Release notes
Open source →- fix(imagemounter): derive EPRO/ESEC from RestoreRequestRules for TSS #781
-
v1.2.1-0.20260609190947-274bc438a05e09 Jun 2026 pre-releaseNothing published for this version
-
v1.2.008 Jun 2026Release notes
Open source →Highlights
- New
ios ui run (wda | devicekit)— bring up a WebDriverAgent or DeviceKit UI-automation runner and forward its port, the run counterpart toui download/ui install(#761). - Accessibility audit —
ios ax auditruns the on-device accessibility audit on iOS 14–18, with structured output (#618). - WebInspector / CDP — new WebInspector service with a Chrome DevTools Protocol bridge, interactive controls, and a JS shell (#744).
- Apple signing + UI automation commands — sign and drive WDA/DeviceKit runners directly from the CLI.
runtest/runxctestnow emit test results as JSON to stdout, always (#573).
Tunnel (iOS 17+)
- Per-device tunnel stop and refresh (#738).
- Userspace tunnel: IPv6 framing fix and TLS-PSK transport for iOS 18.2+, plus robustness and performance work (#748).
- Limit automatic tunnel lookup to RSD commands (#753); attach tunnel info to
devicestate/resetlocation/setlocationgpx(#756). - Fix a usbmux socket leak in
TunnelManager— skip network devices and back off failed ones (#682). - More reliable single-device reconnect handling (#691).
Fixes
forward: stop logging normal connection teardown as errors (#754, #639) and make teardown race-free (#762).instruments: retry transient device launch failures (NSError code 2), fixing flakyios launch(#763).- Windows: stop the TUN event loop spinning when a device disconnects (#690).
- Replace a panic with an error return in the archive path (#705).
- Warn that
--pair-record-path=defaultis TCC-blocked on macOS 26+ (#747). - Better error messages explaining why instruments/devmode fail on unsupported devices (#742).
Internal
- Go 1.26 across all modules; device command dispatch refactored into per-domain handlers; expanded real-device e2e coverage (pre-iOS17, WebInspector, signing, accessibility) with the data-race detector enabled in unit CI.
🙏 Thanks to our contributors
This release was made possible by a fantastic group of contributors — thank you all:
- @sakhisheikh (Sakhi Mansoor) — built out the accessibility APIs (toggle caption text, first/last element, AX queries) that underpin
ios ax audit(#618). 🎉 - @aluedeke (Andreas Lüdeke) — sharp-eyed fix to stop
forwardlogging normal connection teardown as errors, with a clean half-duplex refactor (#754). - @lizhizhuanshu (Ponder) — caught and fixed a Windows goroutine that busy-spun forever when a device disconnects (#690). A year-old fix, finally landed — worth the wait!
- @vbragaru — diagnosed and fixed a real usbmux socket leak in
TunnelManager, complete with overnightlsofevidence (#682). Excellent debugging. - @briankrznarich (Brian Krznarich) — spotted spurious errors logged when a forward connection is cleanly closed (#639). Precise root-cause, patiently carried across go-ios's logrus→golog migration.
- @dmdmdm-nz — made
runtest/runxctestemit machine-readable JSON results, so test output is finally pipeable (#573, #574). - @mvanhorn (Matt Van Horn) — replaced a panic with a proper error return in the archive path, making the library safer to embed (#705).
…and @danielpaulus for the WebInspector/CDP bridge,
ios ui run, the tunnel and signing work, and shepherding it all in. 🚀Several of these PRs had been waiting a while and were rebased onto current
mainwith the contributors' original authorship preserved. Thank you for your patience and your excellent work — go-ios is better because of you. - New
-
v1.1.1-0.20260608204433-2777bf3f94b808 Jun 2026 pre-releaseNothing published for this version
-
v1.1.1-0.20260608165438-21009db7b5e608 Jun 2026 pre-releaseNothing published for this version
-
v1.1.1-0.20260608064827-29b63cd1318e08 Jun 2026 pre-releaseNothing published for this version
-
v1.1.1-0.20260607141320-1737fcb9c13207 Jun 2026 pre-releaseNothing published for this version
-
v1.1.1-0.20260605095758-e700255afbed05 Jun 2026 pre-releaseNothing published for this version
-
v1.1.004 Jun 2026Release notes
Open source →What's new
Performance instrumentation (#365, @kissfu)
New
instruments-backed services for live device telemetry: network statistics, battery,sysmontapsystem monitoring, and FPS / OpenGL graphics metrics. Useful for profiling app performance and resource usage directly from the CLI/library, with configurable network timeouts.Wallpaper & icon layout (#714, @aluedeke)
New
wallpaperandicon-layoutcommands to read the device's home-screen wallpaper and springboard icon arrangement.Wi-Fi profile management (#692, @gbalduzzi)
Add and remove Wi-Fi connection profiles on a device. Inputs are validated up front, and the command clearly reports when the device must be supervised for the operation to succeed rather than failing obscurely.
Device shutdown (#693, @gbalduzzi)
New support for shutting a device down programmatically.
ConnectionTypein device details (#698, @Harrilee)ios listnow reports each device'sConnectionType(USB or Network), so devices reachable over the network are distinguishable from USB-attached ones. Covered by the e2e device suite.Configurable tunnel-info API host (#737, @aluedeke)
The tunnel-info HTTP API's bind host is now configurable instead of being hard-coded, making it easier to run the tunnel daemon in containerized or remote setups.
REST API:
resetaccessibilityendpoint (#637, @iSevenDays)New endpoint to reset a device's iOS accessibility settings (including font size and related options) back to defaults.
Improvements & fixes
More robust usbmuxd socket resolution (#577, @Ylarod)
GetUsbmuxdSocket/USBMUXD_SOCKET_ADDRESShandling was rewritten: an explicit scheme (unix://,tcp://) is honored as-is (and case-insensitively), a barehost:portis treated as TCP, and a bare path is treated as a unix socket — without the previous panic on unscheme'dhost:portvalues.Pluggable logging — logrus → slog (#736, @danielpaulus)
go-ios no longer depends on logrus. All library logging now flows through a thin
ios/gologslog seam with consistent, filterable attributes (module,udid, and instance identifiers). Library embedders can route go-ios's logs into their own handler withios.SetLogger(*slog.Logger); if you do nothing, standardslog.Default()behavior applies.⚠️ Embedder-facing change: the logrus dependency has been removed and
debugproxy's logger-typed signatures changed accordingly. CLI users are unaffected.Internal
- Removed legacy device integration tests now superseded by the gated
e2esuite (#735, @danielpaulus) - Added a contributor
AGENTS.mddocumenting build/test, real-device CI, the logging convention, and the dispatch-only release process (#734, @danielpaulus) - CI fixes for changelog insertion and npm-propagation wait during publish verification (#733, @danielpaulus)
Thanks to everyone who contributed to this release: @kissfu, @aluedeke, @gbalduzzi, @Harrilee, @iSevenDays, and @Ylarod. 🎉
- Removed legacy device integration tests now superseded by the gated
-
v1.0.219-0.20260603100411-0ddc4e68b36903 Jun 2026 pre-releaseNothing published for this version
-
v1.0.21803 Jun 2026Release notes
Open source →✨ New features & improvements
- Redesigned help output —
ios --helpnow shows a clean, sectioned layout (global options + a full command table with one-line descriptions) instead of the raw docopt usage block.ios help <command>,ios <command> --help, andios <command> -hare all equivalent, including nested subcommands likeios help tunnel start. (#716)
🐛 Fixes
- REST API
KillApp— fixed kill-by-bundle-ID, which stopped matching afterCFBundleIdentifier/CFBundleExecutablebecame method calls on the app model. (#729)
Release notes
Open source →✨ New features & improvements
- Redesigned help output —
ios --helpnow shows a clean, sectioned layout (global options + a full command table with one-line descriptions) instead of the raw docopt usage block.ios help <command>,ios <command> --help, andios <command> -hare all equivalent, including nested subcommands likeios help tunnel start. (#716)
🐛 Fixes
- REST API
KillApp— fixed kill-by-bundle-ID, which stopped matching afterCFBundleIdentifier/CFBundleExecutablebecame method calls on the app model. (#729)
- Redesigned help output —
-
v1.0.21703 Jun 2026Release notes
Open source →[1.0.217] - 2026-06-03
First release published to npm since
1.0.213— npm publishing broke when npm
revoked legacy tokens, and is now restored on secure OIDC trusted publishing.
This release also makes the npm package install correctly on Windows for the
first time.✨ New features & improvements
ostrace --follow— persistent log streaming that survives process restarts. Auto-reconnects when the target process exits/restarts: with--process=<name>it re-resolves the new PID, with an explicit--pidit exits cleanly when that PID ends. (#719)ostraceplain-text output —--nojsonnow prints structured, human-readable lines[timestamp] PID:##### <Level> [subsystem:category] messageinstead of raw JSON, with ANSI color coding (Info=cyan, Debug=gray, Error=red, Fault=bold red). Colors are emitted only when stdout is a TTY, so pipes and files stay clean. (#718)- More reliable Developer Disk Image (DDI) mounting on iOS 17+ — fixes
identity-not-foundfailures on newer chips (e.g. A19 Pro) and adds a manifest fast-path that skips the nonce + Apple TSS round-trip on re-mounts when a valid personalization manifest already exists. (#720, #723)
🐛 Fixes
- Windows npm install —
npm i -g go-iospreviously installed a binary that wasn't onPATH(the postinstall placed it in a non-PATHbinsubfolder), soioswas uncallable on Windows. The binary is now installed to the correct location. (#730) - macOS 26 binary launch — bump the Go toolchain to 1.24.13 so produced binaries carry an
LC_UUIDload command; without it, macOS 26's dyld rejects them withabort trap. (#723)
🔧 Build, CI & internals
- npm publishing migrated to OIDC trusted publishing — no more long-lived
NODE_AUTH_TOKEN; releases authenticate per-run via GitHub OIDC, with provenance attestations. (#727) - Cross-platform install verification — release and canary pipelines now install the freshly published package on Windows, Linux and macOS and run the binary, asserting the version matches. (#728, #730)
- Canary release pipeline — manual-dispatch workflow publishing a throwaway
go-ios-canarypackage to validate the full release flow without shipping. (#727) - Releases now gated behind the
make-releaselabel. (#726) - Real-device e2e test suite on the self-hosted macOS/Linux runners, gated to run only after unit tests pass, and runnable on fork PRs via a maintainer
/test-devicescomment. (#723, #725, #726)
Release notes
Open source →First release published to npm since
1.0.213— npm publishing broke when npm revoked legacy tokens, and is now restored on secure OIDC trusted publishing. This release also makes the npm package install correctly on Windows for the first time.✨ New features & improvements
ostrace --follow— persistent log streaming that survives process restarts. Auto-reconnects when the target process exits/restarts: with--process=<name>it re-resolves the new PID, with an explicit--pidit exits cleanly when that PID ends. (#719)ostraceplain-text output —--nojsonnow prints structured, human-readable lines[timestamp] PID:##### <Level> [subsystem:category] messageinstead of raw JSON, with ANSI color coding (Info=cyan, Debug=gray, Error=red, Fault=bold red). Colors are emitted only when stdout is a TTY, so pipes and files stay clean. (#718)- More reliable Developer Disk Image (DDI) mounting on iOS 17+ — fixes
identity-not-foundfailures on newer chips (e.g. A19 Pro) and adds a manifest fast-path that skips the nonce + Apple TSS round-trip on re-mounts when a valid personalization manifest already exists. (#720, #723)
🐛 Fixes
- Windows npm install —
npm i -g go-iospreviously installed a binary that wasn't onPATH(the postinstall placed it in a non-PATHbinsubfolder), soioswas uncallable on Windows. The binary is now installed to the correct location. (#730) - macOS 26 binary launch — bump the Go toolchain to 1.24.13 so produced binaries carry an
LC_UUIDload command; without it, macOS 26's dyld rejects them withabort trap. (#723)
🔧 Build, CI & internals
- npm publishing migrated to OIDC trusted publishing — no more long-lived
NODE_AUTH_TOKEN; releases authenticate per-run via GitHub OIDC, with provenance attestations. (#727) - Cross-platform install verification — release and canary pipelines now install the freshly published package on Windows, Linux and macOS and run the binary, asserting the version matches. (#728, #730)
- Canary release pipeline — manual-dispatch workflow publishing a throwaway
go-ios-canarypackage to validate the full release flow without shipping. (#727) - Releases now gated behind the
make-releaselabel. (#726) - Real-device e2e test suite on the self-hosted macOS/Linux runners, gated to run only after unit tests pass, and runnable on fork PRs via a maintainer
/test-devicescomment. (#723, #725, #726)
-
v1.0.217-0.20260602160013-83cf793e736202 Jun 2026 pre-releaseNothing published for this version
-
v1.0.21602 Jun 2026Release notes
Open source →Merge pull request #725 from danielpaulus/daniel/ci-gate-real-device
ci: run real-device e2e only after unit tests pass
-
v1.0.21502 Jun 2026Release notes
Open source →Merge pull request #720 from zt-luo/imagemounter-ddi-fix
imagemounter: fetch DDI from Deviceboxhq and improve mount reliability
-
v1.0.21402 Jun 2026Nothing published for this version
-
v1.0.214-0.20260810160726-f282f78ed59610 Aug 2026 pre-releaseNothing published for this version
-
v1.0.21307 May 2026Nothing published for this version
-
v1.0.21207 May 2026Nothing published for this version
-
v1.0.21122 Apr 2026Nothing published for this version
-
v1.0.211-0.20260422071638-fcb349a334ec22 Apr 2026 pre-releaseNothing published for this version
-
v1.0.21020 Apr 2026Nothing published for this version
-
v1.0.20917 Apr 2026Nothing published for this version
-
v1.0.20815 Apr 2026Nothing published for this version
-
v1.0.20708 Apr 2026Nothing published for this version
-
v1.0.207-0.20260326100139-5d5f0d1129b826 Mar 2026 pre-releaseNothing published for this version
-
v1.0.20625 Mar 2026Nothing published for this version
-
v1.0.20525 Mar 2026Nothing published for this version
-
v1.0.205-0.20260320123343-a29a1ab48ba920 Mar 2026 pre-releaseNothing published for this version
-
v1.0.205-0.20260316134741-10feda84294e16 Mar 2026 pre-releaseNothing published for this version
-
v1.0.205-0.20260316130747-cfddceeb768c16 Mar 2026 pre-releaseNothing published for this version
-
v1.0.20406 Mar 2026Nothing published for this version
-
v1.0.20303 Mar 2026Nothing published for this version
-
v1.0.20202 Feb 2026Nothing published for this version
-
v1.0.20131 Jan 2026Nothing published for this version
-
v1.0.20028 Jan 2026Nothing published for this version
-
v1.0.19927 Jan 2026Nothing published for this version
-
v1.0.19827 Jan 2026Nothing published for this version
-
v1.0.19726 Jan 2026Nothing published for this version
-
v1.0.19623 Jan 2026Nothing published for this version
-
v1.0.19523 Jan 2026Nothing published for this version
-
v1.0.19423 Jan 2026Nothing published for this version
-
v1.0.19319 Jan 2026Nothing published for this version
-
v1.0.19222 Dec 2025Nothing published for this version
-
v1.0.19119 Dec 2025Nothing published for this version
-
v1.0.19017 Dec 2025Nothing published for this version