Home / Blog / What to Do When
ENGINEERING_BLOG · 2026.09.27

What to Do When Apple Foundation Models Is Unavailable? 2026 Beginner Troubleshooting

The app builds, but its first Foundation Models call returns an unavailable status.

Fastest fix: Read SystemLanguageModel.default.availability first, then follow the reported reason; only debug sessions and requests after the status is available.

This guide is for students following a SwiftUI or iOS course who have hit an unavailable message on their first call.
It also helps you check whether a school computer, older Mac, or remote Mac can run the exercise.
If the device is not eligible, you can keep learning without spending time reinstalling Xcode.

Last updated September 27, 2026; checked against Apple’s availability definitions, unavailable reasons, and current Apple Intelligence device requirements.

SECTION 01 Start with the status, not a reinstall

In a course lab, the status light tells you whether the lab equipment is ready before you start the experiment. SystemLanguageModel provides a similar check: it tells your app whether the system’s language model is available. An API is the set of tools your code uses to ask the operating system to do something; availability is the system’s answer about whether this tool can be used now.

Apple documents the availability value as either available or unavailable with a reason. That makes the first troubleshooting question simple: does the API say the model is unavailable, or is the model available and a later operation failing? Those are different problems. The SystemLanguageModel documentation describes the model interface. The availability definition linked above explains the status result.

For a quick first check, read the value before creating a session:

let availability = SystemLanguageModel.default.availability

switch availability {
case .available:
    print("The model is available")
case .unavailable(let reason):
    print("The model is unavailable: \(reason)")
}

Use this as a diagnostic, not as a complete app flow. Follow the pattern in Apple’s current documentation for your project and deployment target. The important point is to capture the reason instead of treating every failure as “Xcode is broken.”

This week’s action: add the availability check, run it on the device that actually hosts the app, and record the exact status before changing settings or code.

SECTION 02 Read each availability result as a separate diagnosis

Apple lists distinct unavailable reasons, including deviceNotEligible, appleIntelligenceNotEnabled, and modelNotReady. Each points to a different next step; repeating the same request will not solve all three. Apple’s unavailable reason definitions, linked above, explain how to interpret each result.

Result What it points to What to do next
deviceNotEligible The device does not meet the applicable Apple Intelligence requirements. Check Apple’s current device and software requirements for the actual host. If it is unsupported, use a different eligible device or continue with model-free course work.
appleIntelligenceNotEnabled Apple Intelligence is not enabled for the system account or device state being tested. Check the current system settings and Apple’s instructions. Then read the API status again.
modelNotReady The model is not ready for use at the time of the check. Check normal system conditions, wait briefly, and recheck. Do not assume a guaranteed preparation time.
.available followed by an error Availability passed, but session creation, input, or generation failed later. Inspect the session and the specific error rather than troubleshooting device eligibility again.

Treat that table as a routing map, not a promise that every problem fits one row. System versions, supported devices, and regional availability can change. Verify the current requirements rather than relying on a video or class note made for an earlier release. Apple’s current support page, linked above, is the place to confirm supported devices and conditions.

SECTION 03 Resolve deviceNotEligible through the host’s eligibility

deviceNotEligible means you should investigate the device running the app, not keep waiting for a download. It is an eligibility result. Apple’s support documentation identifies the hardware and software conditions for Apple Intelligence; for example, its current Mac requirements include Macs with Apple silicon. Check the full, current list rather than assuming every Mac, or every computer capable of running a development environment, qualifies.

This matters if you are using a school computer or an older Mac. You may be able to write Swift, learn SwiftUI, and build much of a project while still being unable to test this particular model feature on that machine. That is not wasted work: it means you should separate the course tasks that require Foundation Models from the ones that teach interface layout, data flow, or ordinary app structure.

If you are connected to a remote Mac, check the host—not just your laptop. The remote machine is where the app runs, so its own hardware, system configuration, and support conditions determine the result. A remote Mac connection does not convert an unsupported host into an eligible device, and it does not bypass regional limits. Confirm the remote environment before paying to change your setup.

You can also use the broader VPSNIX Mac access information to understand the remote-host option, but verify the exact machine and current requirements before relying on it for a Foundation Models assignment.

SECTION 04 Check Apple Intelligence settings on the device running the app

If the status is appleIntelligenceNotEnabled, check the system setting on the device where the app is running. Do not assume the feature is enabled just because you saw a setting on another Mac, another user account, or a different system installation. Follow Apple’s current setup guidance and confirm that the device and region meet the published requirements.

After changing a setting, run the availability check again. A setting visible in the interface does not prove that the API has finished recognizing the change or that every other eligibility condition is satisfied. The returned status is the useful evidence for your app.

Avoid unofficial workarounds for region or device restrictions. They can leave you with a setup that does not match your course or Apple’s supported conditions, making future failures harder to explain. If the status changes from appleIntelligenceNotEnabled to a different unavailable reason, follow the new reason rather than repeating the same setting change.

SECTION 05 Handle modelNotReady without endless retries

modelNotReady is not the same as deviceNotEligible. The device may be eligible, while the model is not ready at the time your app checks. Apple has a specific documentation page for modelNotReady; use it to interpret the current behavior instead of assuming there is one fixed wait time.

There is no universal number of minutes or hours you can safely promise a beginner. Readiness may depend on current system conditions, and an old answer that gives a precise timer may no longer fit your system release. Start with low-risk checks: confirm the device has normal network access, is not in the middle of a system update, and can remain powered on while the system settles. Then check availability again.

Do not hammer the API in a tight retry loop. It will not make an unavailable model ready, and it can obscure whether the status changed. If a normal pause and basic system checks do not change the result, record the exact reason and move to a lesson exercise that does not depend on the model. Recheck after a meaningful change in system conditions, not after every line of code.

SECTION 06 Debug sessions and requests after availability succeeds

Once the status is .available, stop treating the issue as an eligibility failure. A session is the object your app uses to manage an interaction with the model, much like opening a fresh workbench before starting an experiment. Check whether session creation succeeds, then inspect the request you send and the exact error returned.

Apple’s LanguageModelSession documentation describes sessions, and its Foundation Models error reference helps distinguish failure types. Compare your implementation with Apple’s guide to generating content and performing tasks. Check the actual error rather than relying on a generic message displayed by your app.

Also review whether the request suits the model and the task your course is teaching. Availability does not mean that every prompt, output expectation, or use case is appropriate. For example, if a lesson asks the model for a reliable, complete block of production code, the problem may be the task design or output expectation—not a damaged installation. Start with a small, supported example from the official guide, then change one part of your request at a time.

A useful debugging record contains the availability result, whether session creation succeeded, the request category, and the error type. Keep private data out of logs. This record makes it easier to ask an instructor for help without sending a vague “it doesn’t work” message.

SECTION 07 Follow a troubleshooting timeline

Use these milestones to avoid changing several things at once:

First check — identify the running device. Confirm whether the app is running locally or on a remote host. Check the host’s current system and hardware against Apple’s published requirements.

Next — read availability. Capture the exact value from SystemLanguageModel.default.availability. If it is unavailable, follow its reason. If it is available, move to session and request checks.

Then — change one condition. If Apple Intelligence is disabled, follow the system’s supported setup steps. If the model is not ready, check ordinary system conditions and retry after a pause. If the device is ineligible, stop trying to fix it with code.

Finally — test a small example. When availability is available, use a basic documented session and request. Compare the exact error with Apple’s error reference before editing unrelated project settings.

Use the checklist to decide whether to continue on your current setup:

  • [ ] I know which physical or remote device is running the app.
  • [ ] I checked that device against Apple’s current support requirements.
  • [ ] I recorded the exact SystemLanguageModel availability result.
  • [ ] I followed the specific unavailable reason instead of reinstalling Xcode first.
  • [ ] If the result is available, I checked session creation and the returned error separately.
  • [ ] I can continue the rest of the course without blocking on this model exercise.

If you are specifically searching for macOS 27 requirements, do not treat the version name alone as proof of support. Check Apple’s latest Foundation Models and Apple Intelligence documentation, then verify the runtime availability on your actual host. A system version label cannot replace the API status check.

SECTION 08 New learner questions

What should you do if the result is deviceNotEligible?

Stop waiting for a download and check the device running the app against Apple’s current support requirements. If the machine is not eligible, work on the parts of the course that do not require Foundation Models, or test on another supported device. Reinstalling Xcode cannot change the hardware eligibility of the host.

How long should you wait for modelNotReady?

Apple does not publish one wait time that applies to every system condition. Check network access, power, and whether the system is busy with an update, then pause and read availability again. If the status does not change, avoid repeated rapid retries. Record the result and continue with a course task that does not depend on the model.

Apple Intelligence is enabled, but the API still says unavailable. What now?

Read the API’s current availability reason on the same device and account where your app runs. A visible setting does not establish that the model is ready or that every support condition is met. Use the new reason to choose your next check, and compare the device and regional conditions with Apple’s latest published requirements.

Is a remote Mac issue caused by the device or your code?

Check availability on the remote host first. An unavailable reason points you toward the host’s eligibility, settings, or readiness; it is not evidence that your local laptop is at fault. If the host reports available, inspect session creation and the error returned by the request. Remote access does not bypass device or region requirements.

SECTION 09 Choose an environment that matches the course

If your current setup is ineligible, keep the distinction clear: a Windows computer or unsupported Mac can still support general programming practice, but it cannot satisfy a Foundation Models exercise that requires an eligible Apple environment. A remote Mac may be an option only if the host itself meets the current device and regional requirements. Check those details before switching, and review VPSNIX pricing only if you need to compare temporary access with other ways to complete the assignment.

Compared with an eligible Mac environment, a school computer may block system settings or software installation, a Windows machine cannot run a native macOS-only test, and an older Mac may fail the model’s eligibility check. Renting a remote Mac from VPSNIX can offer a more suitable way to test when you need temporary access, but it is not a workaround for an unsupported host or region. If your course requires stable, long-term use or direct physical connections to devices, assess those needs before choosing remote access.

SECTION 10 FAQ

What should I do if Apple Foundation Models reports deviceNotEligible?

Treat deviceNotEligible as an eligibility issue, not a download that will fix itself. Check Apple’s current Apple Intelligence device and software requirements for the actual Mac or other device running your app. If that hardware is not supported, keep working on parts of the course that do not need the model, or use a different eligible device. A remote connection does not change the host’s eligibility.

How long should I wait when the reason is modelNotReady?

Apple’s documentation does not give a universal wait time, so don’t rely on a fixed number of minutes or hours. Check that the system is online and in a normal operating state, then read availability again after a reasonable pause. If the status stays unchanged, stop repeatedly retrying and inspect system conditions or move on to an exercise that does not depend on the model.

Apple Intelligence is on, but why is Foundation Models still unavailable?

A visible Apple Intelligence setting is not proof that the Foundation Models API is currently available to your app. Read SystemLanguageModel.default.availability and inspect the exact reason returned. The remaining cause could be device eligibility, model readiness, or another system condition. Confirm the device and current regional support details in Apple’s documentation before changing project code.

How can I tell whether a remote Mac issue is caused by the device or my code?

First check availability on the remote Mac itself. If it returns an unavailable reason, investigate that host’s hardware, system settings, and model readiness; changing your local computer will not resolve those host conditions. If availability is available, test session creation and a simple supported request, then inspect the specific error. Remote access does not bypass Apple’s device or regional requirements.