Agent systems are unreliable in numerous ways. They may use heuristic problem solving algorithms. Interacting agents may produce surprising aggregate behaviours because of asynchronous communication. Individuals in agent societies may breach the social conventions of that society. Hazards which were containable at the level of an individual agent may multiply when scaling to many agents. These are basic problems which we must solve (along with many others) to realise the ambition of reliable multi-agent systems, and we must be able to solve them together in a way which allows methodical engineering design. I shall describe some of our efforts in this area.