1) Session IDs get reused after 1048575 sessions have been established in a lifetime of a FileServer instance. However, it's guaranteed that no two separate sessions will use the same ID.
2) This kind of usage is a supported scenario and our VFS subsystem will behave accordingly - see the ZIP virtual file system provider sample that relies on custom nodes being kept.
3) Unfortunately, the SFTP protocol doesn't provide any standard mechanism for sending messages to SFTP clients. It's essentially a simple remote file system protocol, and messaging capabilities are outside of its scope. However, if both the client and the server side are under you control, you might achieve this by a custom extension - for example by using a special file for communication. Or you can open a custom SSH channel (within the same SSH session) and use that. But of course, this won't work with third-party SFTP clients.
4) and 5) The SFTP client will receive a generic SFTP error with an error code of
SSH_FX_FAILURE and an error message of 'Internal server error.'. If you throw a FileSystemException exception, the client will get the supplied error message instead.
6) SFTP is essentially a simple remote file system protocol, so the only standard way to inform the client of an error is to fail an operation and supply an error message.