$safe inside a timer is meant to prevent /timer to
'double evaluate' the content passed to that command, this is only required when passing unknown content to /timer, which is not the case in your example.
If you want to do something else than that (which is not clear in your example), you need to either call an alias or keep chaining command in the parameter of /timer, which is ugly, but don't require an alias..
ON *:CONNECT:.timer -ho 1 0 myalias
alias myalias {
var %ok = $input(Connected,oid,Info)
echo -a ok
}
; OR
ON *:CONNECT: { .timer -ho 1 0 var % $+ ok = $!input(Connected,oid,Info) $(|) echo -a % $+ ok }