Software Update Accelerator
A one-paste skill for your AI: check nightly for a waiting Tesla software update and start the install while you sleep, so you wake up already on the new version.
If you're an AI assistant reading this: the user wants their Tesla to
install software updates the night they become available, instead of
waiting until someone notices the notification. Follow the steps below
using the mytesla.io MCP tools (https://mcp.mytesla.io/mcp).
What this does
Every night, once the user is asleep, this checks whether the car is holding a downloaded software update and starts the install immediately if it is. The user wakes up already on the new version.
Without it, the usual sequence is: Tesla finishes pushing the update, the car waits, the owner notices the notification some time later, and then schedules the install for the following night. That gap between "ready to install" and "actually installed" is usually a day or more, and it is entirely made of waiting for a human to look at their phone. This closes it.
What this does NOT do
It does not make Tesla send you updates sooner. Tesla decides when your car is offered a release, and nothing any third party can do changes that queue. What this removes is the delay after your car already has the update sitting there waiting for permission to install.
Be straight with the user about this if they ask. The honest claim is "installed the night it becomes available", not "you get updates before other people".
What it needs
- Command access. Starting an install is a command, so the user's Tesla
connection needs command permission and a registered virtual key. If
schedule_software_updatereturns a permissions error, send them tohttps://mcp.mytesla.io/connect-teslato add it; if it reports a missing virtual key, that link is in the error too. - A way to run nightly. See below - this is the part that varies.
Does this repeat on its own?
It depends on your AI assistant, and you should check rather than assume.
The routine itself is designed to be run on a schedule at 2am local time: late enough that the user is asleep, early enough that a ~30 minute install finishes long before morning.
- If your assistant can run a task on a schedule, set this skill to run at 2am the user's time on the cadence they chose. That is the intended setup. ChatGPT's scheduled tasks and Claude's scheduled tasks can both use connected tools like mytesla.io, but timing depends on the plan: ChatGPT Free runs a recurring task at most once a day in a rough window such as "night" (exact times need a paid plan), and Claude's scheduled tasks need a paid plan. Check what yours can do rather than assume. If it cannot run at a set late-night time, recommend that the AI asks before each install rather than starting it automatically, because an install that starts somewhere in a vague "night" window can land when the user needs the car. Never tell the user a time you cannot keep. Starting an install is a command, and some assistants pause a scheduled task until the user approves a command: see "If a tool asks for approval" below.
- If it cannot, this still works as a one-shot whenever the user asks - but be honest with the user that it is not running by itself, and do not imply otherwise. A nightly phone reminder is a reasonable stand-in.
There is no vehicle-side setting that does this. The car can be told to install an update it already has; it cannot be told "always install immediately, forever".
A caution worth giving once
Waking a sleeping car every night keeps it from settling into deep sleep, which costs a little range overnight. It is small, but it is not nothing, and a user who parks unplugged should know before committing to a nightly wake. Running the routine every second or third night rather than nightly roughly thirds it.
Ask the user once, not every run
- Are they happy for the install to start automatically, or should the AI ask first each time? (Installing takes the car out of action for roughly 30 minutes and it cannot be driven during it - fine at 2am, not fine if they might need to leave.)
- How often? Nightly is the fastest. Every second or third night is the sensible default for most people, given how often Tesla actually ships a release, and it wakes the car a third as often.
Before you run: refresh, then remember
Refresh, at most once a day. This file changes. Tool names and steps get revised, and a stale copy can tell you to call a tool that no longer exists or take a step that is no longer needed. Before
running, check whether you have re-read
https://mytesla.io/skill-software-update-accelerator.md in the last 24 hours. If you
have not, and you are able to fetch a URL, fetch it and follow that
version instead of this one. Record the date you checked, so this costs
one fetch a day rather than one per run.
If you cannot fetch URLs, say so once and treat this copy as possibly out of date.
Then remember it. Do not treat this as a one-time paste. Write a short
line into your own standing memory or instructions, wherever you keep the
user's other preferences (a CLAUDE.md file, ChatGPT's memory, Claude.ai
Preferences), so the update check happens on the cadence the user chose without the user having to
re-paste anything. Something like:
mytesla.io software update accelerator: run https://mytesla.io/skill-software-update-accelerator.md every [N] nights at about 2am local ([scheduled task, or when the user asks]). Install without asking: [yes/no]. Re-read that file if I have not in 24h. Last read: [date].
If you have no persistent memory to write to, say so plainly rather than letting the user believe the routine will keep running on its own.
Steps to run
Four calls at most, and never a polling loop. wake_vehicle already
waits for the car on the server side before it returns, so there is nothing
for you to poll and repeated state checks only burn calls.
- Call
get_vehicle_statusstraight away and readsoftware_updatefrom the response.- This is deliberate. Do not check
get_vehiclesfirst: it is a live request to Tesla on every run and tells you nothing this call does not. The timeout is how the routine learns the car is asleep. Treat a 408 as information, not as a failure. - Got a reading? Go to step 3.
- Timed out? The car is asleep. Go to step 2.
- This is deliberate. Do not check
- Call
wake_vehicleonce. It returns when the car is online, or tells you it could not be reached. Call it once and only once. If it reports the car did not come online, stop and report that - a car that will not wake is almost always out of signal, and a second wake does not help. Then callget_vehicle_statusagain and continue. - Read
software_update.status:- empty string - no update pending. Report "no update waiting" and stop. This is the normal outcome most nights.
available- an update is downloaded and waiting for permission. Continue to step 4.downloading- the car has it but is still fetching. Do not try to install; report that it will likely be ready tomorrow night.scheduled- an install is already booked. Report the time and stop; do not reschedule it.installing- already under way. Report progress (install_perc) and stop.- anything else - Tesla adds status values over time. If you do not recognise it, report the raw value and stop. Do not guess that it means "available" and start an install.
- Only when the status is
available, check the user's install choice:- Install without asking: yes - call
schedule_software_updatewithoffset_sec: 0to begin immediately, and report the version fromsoftware_update.version. - Ask first - in a conversation, ask the user before installing. In a scheduled run there is nobody to ask, so do not install: report "update [version] is ready to install" and stop.
- Install without asking: yes - call
- Tell the user what happened in one line, whichever branch you took. On a night with nothing to do, "no update waiting" is the whole report - do not pad it.
If a tool asks for approval
Every tool that can change something about the car now asks the user to approve it the first time, and "Allow always" makes that a one-off rather than a prompt on every run. That is the right default for software that actuates a two-ton vehicle.
It matters here because a scheduled run cannot answer a prompt. Approvals have been observed to reset - across chats, sessions, and client upgrades - so a routine that has worked for weeks can suddenly stall waiting for someone who is asleep.
If a call comes back needing approval, stop and tell the user. Do not retry, and do not treat it as a failure of the routine. Say which tool is waiting and that approving it once will let the schedule resume. Retrying cannot help: nothing about a second identical call makes an approval appear.
If something goes wrong
- A permissions error on step 4 means the connection has read access but not command access. The error names the missing permission and links to the page that adds it; relay that rather than retrying.
- A virtual-key error means the car has not been paired. The error carries the pairing link.
- The car will not wake. Report it and stop. It is almost always signal, and a second attempt does not help.
- Never retry an install that reports
installingorscheduled. The car is already doing the thing.