This is actually incorrect. You can rename files through an HTTP request to SharePoint, and it works for Lists and Libraries.
For demonstration, here is my Power Automate flow:
In my case, I am changing the internal SharePoint library {FilenameWithExtension} property when someone edits a file. (There is a trigger condition so it doesn't run infinitely, but that's irrelevant.)
In this instance I have a custom column field that is a placeholder for the name of the item that is safely editable by users in the library. Theoretically editing my '{fake file name}' field is when the flow would trigger.

Here are my pseudo-steps:
- File is modified (Trigger condition: {Title} is not equal to {fake file name})
- Change {Title} to {fake file name}, passing the triggerOutputs()?['body/ID'] from the previous step to the Id field.

3. Then I check if my {fake file name} field is not equal to the internal {FilenameWithExtension} property, because if it isn't then that's when I want to change the internal file name to my new file name that the user obviously changed it to in the {fake file name} field.
If they are equal then I don't care about changing the internal file name in this flow because it wasn't the name they changed.

4. From here, I follow the steps on this user blog. I Send an HTTP request to SharePoint (a Power Automate built in action). As per the blog, "This [step] will return the ListItemEntityTypeFullName property, which we will need for the next step."
You'll notice that here I use the {GetByID} call and plug in my library's ID. The reason for this is because when I use the blog's suggested {GetByTitle} call I got this error:
"List '<Your list/library name>' does not exist at site with URL: ''<my domain> dot sharepoint dot com/sites/CEOPortalTest" "
This fix is here (second last answer). You basically go to your Library Settings and check out your actual URL in the browser. Between %7B and %7D will be the ID of your Library/List. For some reason ID works and GetByTitle doesn't.
5. In the final step, you're basically passing in the file ID from an earlier step, using the generic ['body/ID'] will not work. This specifies the exact file ID the HTTP request is modifying.
Then you're entering the new properties of the file in that specific format, as per the blog. Honestly this part goes over my head a little but hey, it works and it's clear to those who understand it.

And that's it! It works beautifully. Here's proof (Watch the name of the left field, which is the internal library {FilenameWithExtension} property.

I'm changing the {fake file name} field on this document to X_HR_EmployeeChanged_050221.docx.

Once the change has been made, I exit out of edit mode (grid view in SharePoint Online). You can see the {fake file name} field has changed and the internal file name has not, at least not yet. Now we wait a couple of seconds for the flow to run.

And there you can see the flow kicked off and passed successfully:

And there's your proof! Clear as day, a renamed internal file from a SharePoint Online List/Library:

I hope this helps someone looking for the same solution I was.