diff --git a/Common/GmshMessage.cpp b/Common/GmshMessage.cpp
index bd95c0f317f5b397aff89861463654a7458de894..93aa3099671de03f5a5b6855f8b452d8d8b716ff 100644
--- a/Common/GmshMessage.cpp
+++ b/Common/GmshMessage.cpp
@@ -716,7 +716,8 @@ void Msg::ExchangeOnelabParameter(const std::string &key,
   bool noRange = true, noChoices = true, noLoop = true;
   bool noGraph = true, noClosed = true;
   if(ps.size()){
-    val[0] = ps[0].getValue(); // always use value from server
+    if(!ps[0].getReadOnly())
+      val[0] = ps[0].getValue(); // use value from server
     // keep track of these attributes, which can be changed server-side
     if(ps[0].getMin() != -onelab::parameter::maxNumber() ||
        ps[0].getMax() != onelab::parameter::maxNumber() ||