Provide Privileged and Unprivileged control ports
(This may be a duplicate because I know this has been discussed before, but I couldn't find the original if it exists)
The control port has the potential ability to pass sensitive information (legacy/trac#3521 (moved), legacy/trac#5976 (moved), legacy/trac#1949 (moved)). There may be situations where one controller only needs the ability to query and receive a limited amount of information and another controller handles the sensitive information. These two processes should be able to connect/authenticate to different sockets and and thus prevent the first process from receiving sensitive information.
Alternatively, this same isolation can be achieved using the chosen authentication mechanism.
Whichever is better (or if both, or another, are chosen), the capabilities of the connection should also be configurable via torrc and control port. For example, whether a connection is allowed to SETCONF or only GETCONF and SETEVENTS, etc. A high level of granularity would be ideal.