Troubleshooting
Symptom → cause → fix, grouped by area. If your issue isn't here, check the FAQ, then contact support from the Support page in the app — include what you were doing, the exact error message, your browser/VS Code version, and (for the extension) the logs from View → Output → "SkillFoundry Assessment".
Sign-in and access
I can't sign in
- Wrong method: if you originally signed up with Google/GitHub, password login won't work — use the same method every time.
- SSO domains: if your company enforces SSO, entering your work email routes you to your identity provider. "SSO is not configured for this email domain" means your org admin needs to add your domain to the SSO settings.
- Rate limiting: repeated failed attempts are rate-limited (10/minute). Wait a minute and retry.
I'm redirected to role selection / "Unauthorized" pages
- New accounts must complete role selection before anything else works — pick your role and continue.
- "Unauthorized" on a specific page means your role doesn't have access (e.g., candidate opening interviewer pages). If your role was recently changed, log out and back in — roles live in your sign-in token.
- Interviewer features additionally require organization membership; accept your org invitation first.
Invitation problems
| Message |
Fix |
| "Invalid or expired invitation" |
Ask the sender to resend from their invitations list |
| Invite "already used" |
You (or someone) already accepted — just sign in |
| Accepted, but wrong role/org |
The invitation carried the role; ask your admin to correct your membership, then log out and in |
The assessment workspace (browser)
Editor does not load
The code editor (Monaco) loads as a script bundle and can be blocked by:
- Browser extensions (script/privacy blockers, some antivirus web shields) — disable them for the SkillFoundry domain or use a clean browser profile.
- Corporate proxies / content-security policies — try from a network without TLS interception, or ask IT to allow the SkillFoundry domains.
- Very old browsers — use a current Chrome, Edge, Firefox, or Safari.
A hard refresh (Ctrl/Cmd+Shift+R) after fixing the blocker usually resolves it.
My changes / test results seem stale or out of sync
Refresh the page — the workspace restores your attempt state from the server. Changes are persisted as you work, so a refresh is safe.
The timer expired before I finished
Submit whatever you have when prompted — partial work is evaluated. Note the clock starts when you start the attempt (not when you open the task page) and keeps running if you navigate away.
"AI usage has been detected — submission flagged for review"
The task disallowed AI assistance and your session's activity looked inconsistent with that policy. The submission still went through — a human reviewer will look at it. If you didn't use AI, don't panic: flags are investigated, not auto-rejected, and reviewers can see the full activity timeline that will support your account of events.
Task page or content fails to load / shows errors
- Check the API status page in the app (
/api-status) — if the backend is unreachable, wait and retry.
- New accounts with no data can see empty dashboards; that's normal until you start a task.
VS Code extension
Activation and session
| Symptom |
Fix |
| "Session token must start with sf_ide_" |
Copy the complete token from the assessment page — it begins with sf_ide_ |
| "Failed to activate session" |
Token expired or revoked — generate a fresh one from the assessment page (tokens last ~48h; max 5 active per attempt, so revoke old ones if you hit the cap) |
| "User not found" during activation |
The token is valid but your account isn't provisioned — sign in to the web app once first, or contact the hiring team |
Deep link (vscode://…) does nothing |
Known limitation — activate manually: Command Palette → SkillFoundry: Activate Assessment → paste token |
| "Authentication failed. Please re-activate your session." mid-session |
Session expired; re-activate with a new token. Your local work is untouched |
Repository and workspace
| Symptom |
Fix |
| "Git is not installed" |
Install Git, restart VS Code. Git is required for cloning and submitting |
| "Failed to clone repository" |
Verify you have access (private repos need your Git credentials configured) and the network allows cloning. Try git clone <url> in a terminal to isolate the issue |
| Sidebar/panel says no session after opening the repo |
The clone flow carries your session into the new window automatically; if you opened the folder manually, run Activate Assessment again in that window |
| Behavioral data tab shows nothing |
Collection starts only after SkillFoundry: Start Timer — run it |
Testing and submitting
| Symptom |
Fix |
| "No test or lint commands detected" |
Auto-detection covers npm/jest, pytest, Go, Cargo, Maven, Gradle. For other stacks, run tests manually in the terminal — your submission is still validated server-side |
| "No workspace folder open" at submit |
Open the cloned task repository folder before submitting |
| "No uncommitted changes detected. Submit anyway?" |
The extension submits your git diff — if you already committed everything, this warning is expected and safe to proceed past; if you haven't written code yet, don't submit |
| Test counts show "Not run" in the preview |
Local test-count tracking is best-effort; your solution is re-tested server-side after submission, so this doesn't affect scoring |
Connectivity
| Symptom |
Fix |
| "Network issue detected. Events will be buffered…" |
Keep working — up to 10,000 events buffer locally and sync automatically on reconnect |
| "Rate limit exceeded" in AI chat |
Chat allows ~10 messages/minute — wait and retry |
| Everything times out |
Requests time out after 30s. Check connectivity to api.skillfoundry.dev (or your org's configured skillfoundry.apiBaseUrl — a wrong value here is a common cause; reload VS Code after changing it) |
Tasks and imports (hiring teams)
| Symptom |
Fix |
| PR import fails with "Invalid PR URL" |
Use the full PR URL (https://github.com/owner/repo/pull/123) |
| PR import fails on a private repo |
Connect GitHub or store a valid personal access token; expired/revoked tokens are the usual culprit — rotate under GitHub settings |
| Task Builder draft stuck in "processing" |
Drafts build asynchronously; large PRs take longer. If stuck beyond ~15 minutes, recreate the draft, and contact support if it recurs |
| Creating tasks / inviting candidates / adding members fails with an upgrade prompt |
Subscription plan limit reached — see Billing |
| Candidate says the task looks different from what I built |
Editing a live task doesn't retroactively change started attempts — create a new task version instead of editing in place |
Billing
| Symptom |
Fix |
| Plan not active after checkout |
Confirmation processes via payment webhooks — normally instant. Refresh after a couple of minutes; escalate with your receipt if not |
| Payment failed |
Update the card under Billing → Payment methods; retries happen automatically |
| Can't downgrade |
Your current usage exceeds the target plan's limits — reduce members/tasks/candidates first (the error says which limit) |
API integrations
| Symptom |
Fix |
| 401 on every request |
Token missing/expired — re-authenticate. Check you're sending Authorization: Bearer <token> |
| 403 with an upgrade message |
Plan limit, not permissions — an org admin needs to act; don't retry |
| 403 without an upgrade message |
Role or org-membership restriction — check the endpoint's required role in the reference |
| 429 |
Rate limit (60/min general, 20/10s burst) — add exponential backoff |
| 202 responses that never "finish" |
202 means processing is asynchronous — poll the resource's status endpoint (runs, drafts, imports, learning submissions) with backoff |
| Score report 404 after submission |
Scoring is asynchronous — keep polling; the report appears when the pipeline completes |
| Presigned artifact URL fails |
Artifact URLs are time-limited — re-fetch the run to get fresh URLs |
Still stuck?
Contact support from the Support page in the app with:
- What you were trying to do, step by step
- The exact error message (screenshot helps)
- When it happened (with timezone) — server-side errors carry an
error_id we can look up
- Browser + OS, or VS Code version + extension logs (View → Output → "SkillFoundry Assessment")