I am estimating a simple New Keynesian model using maximum likelihood (csminwel optimisation algorithm, Dynare version 3.064). For some versions of the model I get different parameter estimates each time I re-run the procedure (using the same *.mod file and the same dataset). Is this a common problem?

when csminwel is facing a bad spot, it takes a random jump and this jump will be different in different runs.
You can control this behaviour by reseeding Matlab’s uniform random generator before the “estimation” statement.
For example:
rand(‘state’,0);

However, if the final estimation results are very dependent of these random jumps, they are very fragile. At least two things may happen:

csminwel get stock in local minima, but different ones depending of the value of these random jumps. You should then see differences in the final value of the objective function (minus the log likelihood).

The likelihood is very flat in some direction and csminwel will stop at a different point depending on the random jumps, but with very little difference in the value of the objective function.