An agent asked to fix alt text does the obvious thing. Alt text is stored as a custom field, so it reaches for the custom-field tool, gets refused, and tells you it does not have permission. Featured images go the same way. The report is misleading in a way that stops the job: nothing is wrong with your permissions, and granting more will not help.
Alt text lives under _wp_attachment_image_alt and the featured image under _thumbnail_id. Both are protected keys in stock WordPress, and the post-meta abilities refuse them the same way for an administrator as for a subscriber. The route that works runs through the media abilities, which write the same storage with a plain field on the front of it.
Set the alt text on [image ID 218] to something that describes what it shows,and make that same image the featured image on [post ID 142].
Do not use the post-meta tools for this. WordPress keeps alt text and thefeatured image under protected keys those tools cannot reach, so a refusalthere is the tool being out of scope, not a permission I can grant you. Usethe media abilities instead: update-media takes an alt parameter, andset-featured-image takes a post and an existing image attachment.
Read both back to me first, the current alt on the image and the currentfeatured image on the post, and show me exactly what you plan to write.Wait for my go-ahead. After the writes, read them back again so I can seethe new values.Why this is safe to run
The refusal you started with is doing its job. A protected key is blocked identically for everyone, so the answer never depends on who asked or on how your site is configured, and no amount of capability changes it. Naming the alternative gives nothing away for the same reason: the block was decided by the key alone, without reading anything about your setup.
The route that does work is narrow. Reading the image and the post writes nothing, so you see the current alt text and the current featured image before anything saves. The alt write touches one field on one attachment: the image file is untouched, and so is any post that embeds it. Setting a featured image changes one reference on the post and never the body or the publish status. Each write is checked against the bound user’s capability on that exact item, both abilities stay off until you switch them on, and both land in the Activity Log.
The one honest caveat: neither of these is covered by post revisions, so there is no one-click restore. Both are cheap to correct by hand, since you are changing a short string or pointing at a different image.
Once you know the route, the same two abilities scale. The fill in missing image alt text recipe runs it across the whole library, and the featured-image backfill recipe does the same for posts with no thumbnail.
Already connected? Skip the paste. Tell your agent that alt text and featured images go through the media abilities rather than post meta, and it runs the same read, approve, write flow on your own site.