This is not surprising or a bug. It may not be intuitive, but this is by design.
The GUI displays values of Parms. Parms get written to the *.vsp3 file. They are the permanent variables used to store stuff in OpenVSP.
When you use Analysis Manager to run an analysis, you set variables via 'SetXXXAnalysisInput'. When you do this, every AnalysisInput already has a default value -- that default is not hard-coded, it was obtained from the corresponding Parm value in the model.
Let's say you set one of the AnalysisInput values to something different than the default (the value held in the Parm). And then you Execute the analysis.
At that time, OpenVSP makes a backup copy of the value stored in Parm. It then takes the value you set in AnalysisInput and assigns the Parm to that value. It then Executes the analysis tool (whatever that does). When complete, it parses the results into the ResultsManager data structures. It then restores the backed up values of the inputs to the Parms -- i.e. the Parms do not permanently take on the value set via AnalysisInput.
Consequently, when you save this file to a *.vsp3, it will not reflect your AnalysisInput values.
However, you can open a *.vsp3 file in the GUI, go to all the appropriate screens and set the Parm values - and save that *.vsp3 file. Then, when you open that file via the API and run an analysis, all the AnalysisInputs should have the default values you set in the GUI.
If you want to create a file from scratch in the API -- and you want to change the analysis Parm values (to change the Analysis Input defaults and have those values recorded to an eventual *.vsp3 file), then you need to change those variables using the 'normal' routines for changing Parm values -- just like you would for wing span or fuselage length, or whatever.
Rob