diff --git a/runcommands/config.py b/runcommands/config.py
index <HASH>..<HASH> 100644
--- a/runcommands/config.py
+++ b/runcommands/config.py
@@ -517,12 +517,12 @@ class JSONValue(str):
             if not tolerant:
                 args = exc.args + (name,)
                 raise ConfigTypeError(*args) from None
-            obj = value
+            obj = str(value)
         except ValueError as exc:
             if not tolerant:
                 args = exc.args + (name,)
                 raise ConfigValueError(*args) from None
-            obj = value
+            obj = str(value)
         return obj
 
     @classmethod
Convert value to str when being tolerant in JSONValue.loads()

The `tolerant` flag means "treat this value as a string if it's not a
valid JSON value". The previous logic, which didn't do `str(value)`,
would return such values as-is, which meant that any type could be
returned when a string would be expected.