You can send in that SAVE input and then (immediately) send a specialinput containing the filename. However, this will never be reliable. You don’t know how the game will respond to the input text SAVE. The game could have disabled SAVE, it could be in Russian, it could be in the middle of keystroke input.
“The VM initiates save” means a setup where the interpreter runs a turn, gets back to the point of awaiting input (glk_select), and – as part of that code path – saves its state somewhere. This can be made to work reliably, but it requires extra integration work between the interpreter and VM, as Dannii said.
(I apologize for leading you down a bit of a garden path by recommending RemGlk! Autosave really is a big headache.)