In Canada can an employer require its employees not to discuss wages (either internal or external of the company)? What if the employee signed a confidentiality agreement where they agreed not to discuss wages? I would really appreciate citation from authoritative sources.
In Canada can employer force employees not to discuss wage?
No. That would violate Section 74(1) of the Employment Standards Act, 2000:
No employer or person acting on behalf of an employer shall intimidate, dismiss or otherwise penalize an employee or threaten to do so,
(a) because the employee,
(v.2) discloses the employee’s rate of pay to another employee for the purpose of determining or assisting another person in determining whether an employer is complying with Part XII (Equal Pay for Equal Work)
See also Section 74.12(1)(a)(v.2).
What if the employee signed a confidentiality agreement where they agreed not to discuss wages?
The agreement would be void in that regard. See Section 5 of the same Standards:
[...] [N]o employer or agent of an employer and no employee or agent of an employee shall contract out of or waive an employment standard and any such contracting out or waiver is void.
The allowed exceptions are any clauses that provide a greater benefit to an employee than the employment standard (see 5(2)).