One option is supporting the exit code: https://www.terraform.io/docs/commands/plan.html#detailed-exitcode The `Plan` signature could be changed to: `Plan(...) (changesPresent bool, err error)` or something similar to surface the exit code data. Another option is just returning the actual JSON plan always from the `Plan` method. In programmatic usage you probably will want it frequently anyway. We could optionally do both of these in the return values.