better exit codes for permanent and temporary errors