Reproduce and validate iOS bugs in 60 seconds with Claude. MCP-native iOS Simulator + real-device automation. 32 vision-first tools. Elastic-2.0.
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution ×3 in SyncTek-LLC/simdrive
transport stdio · http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 013a4f0 · analyzer v28 · 1d ago
skills & prompt files 1
- agent-rules SyncTek-LLC-simdrive-013a4f0/CLAUDE.md
danger signals3
- dynamic code execution __import__ sink SyncTek-LLC-simdrive-013a4f0/simdrive/tests/test_a12_typetext_device.py :196
for c in __import__("subprocess").run.__class__.call_args_list if hasattr( - dynamic code execution __import__() SyncTek-LLC-simdrive-013a4f0/tests/regression/test_ax_springboard_alert.py :359
else __import__(name, *a, **kw) - dynamic code execution __import__ sink SyncTek-LLC-simdrive-013a4f0/tests/test_runner_process.py :643
__import__("subprocess").TimeoutExpired(cmd="xcodebuild", timeout=5),
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 417
filesystem 54
- fs SyncTek-LLC-simdrive-013a4f0/simdrive/setup.py :16
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/cloud/app.py :22
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/cloud/storage/r2.py :28
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/cloud/storage/r2_stub.py :16
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/device.py :11
import shutil - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/diagnostics.py :9
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/hid_inject.py :12
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/journey/ci.py :28
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/journey/claude_client.py :129
with open(screenshot_path, "rb") as fh: - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/journey/loader.py :8
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/journey/mcp_sampling_client.py :19
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/journey/persona.py :15
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/journey/result.py :10
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/journey/runner.py :19
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/journey/schema.py :11
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/license/cli.py :19
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/license/entitlement.py :11
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/license/telemetry.py :44
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/license/trial.py :11
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/license/trial_history.py :26
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/observability/crash_sink.py :45
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/observe.py :19
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/perf.py :9
import shutil - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/recorder.py :101
import shutil - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/robustness.py :5
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/server.py :71
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/session.py :12
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/sim.py :5
import shutil - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/som.py :12
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/update/check.py :35
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/wda/bootstrap.py :37
import shutil - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/wda/errors.py :165
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/wda/registry.py :10
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/wda/som_device.py :63
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/backends/ax_backend.py :1373
with open(tmp, "rb") as fh: - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/backends/retry_policy.py :154
"""Return True when the circuit is open (consecutive failures exceeded threshold).""" - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/cli/commands.py :32
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/cli/license_cmd.py :18
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/cli/setup.py :20
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/config.py :24
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/capture.py :17
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/crash.py :15
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/driver.py :183
with Image.open(tmp_path) as img: - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/perf.py :15
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/state.py :11
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/mcp/server.py :59
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/project_injector.py :17
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/replay.py :28
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/runner_process.py :16
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/session_manager.py :23
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/sim_driver.py :345
img = Image.open(screenshot_path) - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/som_annotator.py :564
img = Image.open(io.BytesIO(img_data)).convert("RGBA") - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/som_runner.py :31
from pathlib import Path - fs SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/wda_driver.py :470
img = Image.open(path)
shell / exec 32
- shell SyncTek-LLC-simdrive-013a4f0/simdrive/setup.py :14
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/act.py :14
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/ax.py :24
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/device.py :12
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/diagnostics.py :7
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/hid_inject.py :11
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/perf.py :10
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/robustness.py :4
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/server.py :67
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/sim.py :6
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/wda/bootstrap.py :38
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/window.py :8
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/backends/ax_backend.py :22
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/backends/browserstack.py :15
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/backends/indigo_hid.py :66
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/cli/commands.py :28
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/cli/setup.py :19
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/config.py :23
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/capture.py :14
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/console.py :16
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/crash.py :13
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/driver.py :23
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/interaction.py :30
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/network.py :24
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/perf.py :11
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/state.py :10
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/mcp/server.py :51
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/project_injector.py :16
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/runner_process.py :12
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/session_manager.py :19
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/sim_driver.py :22
import subprocess - shell SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/wda_driver.py :35
import subprocess
network 18
- net SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/diagnostics.py :11
from urllib.parse import unquote, urlparse - net SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/license/cli.py :22
import requests - net SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/license/telemetry.py :47
import requests - net SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/server.py :720
# which is fine for screenshot_any() but wastes a new httpx.Client object (F-005). - net SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/update/check.py :38
import requests - net SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/wda/bootstrap.py :44
import httpx - net SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/wda/client.py :32
Transient transport errors (httpx.TransportError — connect/read timeouts, - net SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/backends/browserstack.py :16
import urllib.request - net SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/backends/xctest_client.py :18
import socket - net SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/cli/commands.py :1712
import urllib.request - net SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/cli/license_cmd.py :127
import httpx - net SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/network.py :277
from urllib.parse import urlparse - net SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/license/stripe_webhook.py :172
import httpx - net SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/license/validator.py :384
import httpx - net SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/runner_process.py :340
import urllib.request - net SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/session_manager.py :262
import socket - net SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/som_annotator.py :26
import urllib.request - net SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/wda_driver.py :38
import urllib.error
secrets 14
- secrets SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/cloud/app.py :88
or os.environ.get("SIMDRIVE_LICENSE_PRIVATE_KEY") - secrets SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/cloud/config.py :29
default_factory=lambda: os.environ.get("SIMDRIVE_LICENSE_PRIVATE_KEY") - secrets SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/cloud/storage/r2.py :178
secret_access_key = os.environ.get("R2_SECRET_ACCESS_KEY") - secrets SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/journey/claude_client.py :98
api_key=api_key or os.environ.get("ANTHROPIC_API_KEY"), - secrets SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/backends/browserstack.py :41
self.access_key = access_key or os.environ.get("BROWSERSTACK_ACCESS_KEY", "") - secrets SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/cli/commands.py :350
api_key = os.environ.get("ANTHROPIC_API_KEY", "") - secrets SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/cli/license_cmd.py :265
if not os.environ.get("ANTHROPIC_API_KEY"): - secrets SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/cli/setup.py :267
api_key_set = bool(os.environ.get("ANTHROPIC_API_KEY")) - secrets SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/license/stripe_webhook.py :132
token = os.environ.get("SPECTERQA_KEYGEN_API_TOKEN", "") - secrets SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/license/validator.py :138
if not os.environ.get("ANTHROPIC_API_KEY", "").strip(): - secrets SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/license/webhook_server.py :55
secret_configured = bool(os.environ.get("STRIPE_WEBHOOK_SECRET")) - secrets SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/mcp/server.py :849
license_key = arguments.get("license_key", os.environ.get("SPECTERQA_LICENSE_KEY", "")) - secrets SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/mcp/tier_gate.py :203
license_key = os.environ.get("SPECTERQA_LICENSE_KEY", "").strip() - secrets SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/som_runner.py :96
self.api_key = api_key or os.environ.get("ANTHROPIC_API_KEY", "")
database 4
- db SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/cloud/app.py :156
from sqlalchemy import text - db SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/cloud/db/models.py :17
from sqlalchemy import ( - db SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/cloud/db/usage.py :32
from sqlalchemy import Column, DateTime, Integer, String, UniqueConstraint - db SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/cloud/routes/trials.py :13
from sqlalchemy.orm import Session
install hooks 1
- setup.py SyncTek-LLC-simdrive-013a4f0/simdrive/setup.py :64
setup(cmdclass={"build_py": BuildPyWithNative})
declared dependencies 18
- mcp@>=1.0
- Pillow@>=10.0
- boto3@>=1.20
- email-validator@>=2.0
- httpx@<1.0
- prometheus-client@>=0.19
- pyobjc-framework-Quartz@>=10.0
- pyobjc-framework-Vision@>=10.0
- pydantic@>=2.0
- pynacl@>=1.6.2
- pyyaml@>=6.0
- requests@>=2.28
- scikit-image@>=0.22
- anthropic@>=0.30
- fastapi@>=0.115
- hypothesis@>=6
- uvicorn@>=0.20
- sqlalchemy@>=2.0
clipboard 4
- clipboard shell call SyncTek-LLC-simdrive-013a4f0/simdrive/src/simdrive/sim.py :174
["xcrun", "simctl", "pbcopy", udid], - clipboard shell call SyncTek-LLC-simdrive-013a4f0/simdrive/tests/test_sim_module.py :264
with patch("simdrive.sim.subprocess.run", return_value=_fail("pbcopy fail")): - clipboard shell call SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/drivers/simulator/interaction.py :529
["xcrun", "simctl", "io", self.device_id, "pbcopy"], - clipboard shell call SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/sim_driver.py :481
["xcrun", "simctl", "pbcopy", self.udid],
transport_posture 1
- network-listening, binds all interfaces, no auth detected SyncTek-LLC-simdrive-013a4f0/src/specterqa/ios/license/webhook_server.py :149
uvicorn.run(app, host="0.0.0.0", port=port)