In src/cupdlpx.c around line 113, the following code initializes the variable lower bounds:
fill_or_copy(&prob->variable_lower_bound, prob->num_variables, var_lb, -INFINITY);
This means that by default, all decision variables are treated as free (unbounded below) unless the user explicitly specifies lower bounds.
While this is mathematically valid, it may be counterintuitive for many users, since variables are nonnegative by default in most solvers such as Gurobi, CPLEX, HiGHS, and GLPK.