Too recruit an NPC by object - in other words, to add a specific creature in the game world to your party:
AddAvailableNPCByObject( int nNPC, object oCreature );
The engine is capable of saving object data, of course - but everything except the player and party are restricted to whatever module they were spawned in. As soon as Canderous exits your party, he's no different; he was spawned in that module, so he has to stay in that module. As long as he isn't destroyed, his information is saved and you can get him back by going to that module and recruiting him with the above script.
Of course, if you are doing it in K2, you can just add them to the puppet table and not have to worry about all that; if you add them to the table but don't assign them as a puppet, their information is stored from module to module even if they aren't present.
AddAvailablePUPByObject( int nPUP, object oPuppet );
nPUP must be 0, 1, or 2; the remote takes up slot 0.