what features am I missing out on by using a local model instead of a larger, cloud-based model?
In terms of what Xcode exposes, I think that there is feature parity. As long as your LLM can communicate via the supported API (for chat mode), or the agent harness speaks ACP (for agentic mode), Xcode doesn't care where the model is running and, afaik, it doesn't enable any extra controls if you're using a cloud model compared to what is available when you use a local model.
Big caveat, though: Xcode uses prompts that have likely been tested mostly with Claude and GPT (and now Gemini), and may not work well at all with your local model. There is no way currently to replace them (Apple engineers please correct me if I'm wrong). I wish there was a possibility for “advanced” users to tweak that.
Is Xcode's ability to run tests, build the project, etc. limited by the use of a local model? Does it limit the ability to do more complex agentic workflows? If so, how?
In Xcode, if you enable Settings > Intelligence > Allow external agents to use Xcode tools, an agent supporting MCP can control Xcode directly, and in my experiments a good local model will build and test Xcode projects just fine (and iterate in case of errors). Even if you don't enable MCP, the agent will probably try to use xcodebuild, xcrun, etc anyway, although the user experience is not as good because Xcode won't display the changes as it would otherwise do.
Regarding the quality and complexity of agentic workflows, the key point is not Xcode, but the combination harness+model (+hardware, but that's not something one can usually change as often). Imo you should first get that working well outside of Xcode and then integrate it in Xcode, which may require additional tuning (and ACP compatibility—most ACP-enabled harnesses I've tried currently do not work with Xcode for some reason).
what cloud-based models can offer that I don't already have.
More computational power, hence more “intelligence” (scope, quality, performance). Whether that's necessary to you depends only on your needs. They may be also easier to set up in Xcode.
Running a local model might also be less cost-effective at the moment, but I'm not sure. I'd rather spend a few more $$$ of electricity in any case to be in control.
Nothing else. Environmentally, the best option is probably to avoid using anything. Ethically, many lines have been crossed already, but I believe that “open” models are the lesser evil going forward.