You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| Shell completion | Configuration | Shell autocompletion is installed for the detected shell |
38
49
| MCP server | Integration | If a Clerk MCP entry is installed, every distinct configured server answers the `initialize` handshake; warns on an unreadable client config (skipped when nothing is installed; warns, never fails) |
39
50
51
+
### iOS projects
52
+
53
+
When the current directory contains an Xcode project or `--target` is provided,
54
+
doctor replaces the web `.env` check with the same semantic Xcode, Swift, and
55
+
entitlements inspection used by `clerk init`. It reports separate results for:
56
+
57
+
- application-target selection;
58
+
- ClerkKit and ClerkKitUI product linkage;
59
+
-`Clerk.configure` and the selected target's effective development key;
60
+
- SwiftUI environment injection and authentication-flow evidence;
61
+
- AuthView's enabled methods and required local Apple capability;
62
+
- Associated Domains and the optional Sign in with Apple entitlement;
63
+
- Native API state and the exact Bundle ID registration on the linked
64
+
development instance; and
65
+
- the Clerk Apple connection when the selected target already declares the
66
+
native Apple entitlement.
67
+
68
+
iOS diagnostics never require a secret key in the Xcode project or an env
69
+
file. The linked development publishable key is used only to compare redacted
70
+
Frontend API host metadata; keys, provider credentials, and raw remote config
71
+
are not included in human or JSON output. AuthView, Native Application, and
72
+
Apple remote checks are GET-only. Their remedies point back to `clerk init`;
73
+
`doctor --fix` never enables an auth strategy or changes Native Application
74
+
state.
75
+
76
+
Plain `clerk doctor` remains read-only and does not invoke Xcode. The execution
77
+
flags are deliberately opt-in because Xcode can run package manifests, plugins,
78
+
macros, and project build scripts:
79
+
80
+
-`--resolve-packages` is the only mode allowed to create or update the
81
+
selected container's shared `Package.resolved`.
82
+
-`--build` requires a locked remote package graph, verifies the chosen scheme
83
+
belongs to the selected target, disables signing, filters Clerk credentials
84
+
from the child environment, and builds with temporary DerivedData and package
85
+
checkouts.
86
+
-`--simulator` additionally installs and launches that isolated build. It
87
+
never guesses among multiple devices; agent mode requires `--device`.
88
+
89
+
A successful build or launch is not a successful authentication test. Doctor
90
+
still asks the developer to verify sign-in, sign-out, relaunch, and any redirect
91
+
methods in the app. Projects which load their publishable key only through an
92
+
Xcode Run-scheme environment variable are built but must be launched from Xcode,
93
+
because `simctl launch` does not reproduce arbitrary scheme environment state.
94
+
40
95
### Keyless applications
41
96
42
97
The Authentication token, Token validity, and Project linkage checks resolve
@@ -75,6 +130,10 @@ re-run to verify the results.
75
130
interactive (`clerk auth login` opens a browser, `clerk link` shows a
76
131
picker). It is ignored in `--json` mode and agent mode.
77
132
133
+
`--fix` cannot be combined with Xcode execution flags. This prevents the
134
+
post-fix verification pass from resolving, building, or launching a project a
135
+
second time.
136
+
78
137
Fixable issues:
79
138
80
139
| Issue | Fix action |
@@ -117,8 +176,13 @@ Exit code 1 signals one or more checks failed.
|`GET`|`/oauth/userinfo`| Validates the stored auth token |
182
+
|`GET`|`/v1/platform/applications/{appId}`| Verifies the linked app and its instances exist |
183
+
|`GET`|`/v1/platform/applications/{appId}/instances/{instanceId}/native_settings`| Verifies Native API state for iOS projects |
184
+
|`GET`|`/v1/platform/applications/{appId}/instances/{instanceId}/native_applications/ios`| Verifies the exact iOS Bundle ID registration |
185
+
|`GET`|`/v1/platform/applications/{appId}/instances/{instanceId}/config`| Audits the Apple connection when native Apple is relevant |
186
+
|`GET`|`/v1/platform/applications/{appId}/instances/{instanceId}/config/schema`| Determines whether an unhealthy Apple connection can be safely reconciled by init |
187
+
|`GET`|`https://{fapiHost}/v1/environment`| Verifies whether AuthView currently offers native Apple sign-in |
188
+
|`GET`|`/v1/instance`| Names the keyless application (best-effort, via its secret key) |
0 commit comments