First I wish to thank you for this scp client.
I am using it throught a firewall (thank you for that) but the problem is that the configured timeout is very small (about 5s I guess).
When no data is exchanged for a specified amount of time connection simply stops.
I know you are considering an auto-reconnect or something like that (respawn application?) but you could also add a "keep alive".
Every configurable amount of time you send a low consuming query to the remote host. The problem might be to find which low consuming query is to be used. ls does not apply as there may be hundreds of files.
Maybe you could use something like id or hostname or user configurable command that do not require user input (kind of what you already implemented for the built in shell which is VERY usefull for me).
Hope this helps.