Are canister custodians able to upgrade canister code?

I’m wanting to know if canister custodians (not canister controllers) are authorized to push updates to canisters? Like, if I’m the custodian of a canister, am i able to effect and implement code changes to the canister that i am custodian to?

The concept of a custodian is not something the IC itself knows - the spec does not even contain the word ‘custodian.’ Since this is a concept that’s entirely defined within canisters, it all depends on the implementation. I’m not sure a canister can be its own controller and self-update, but with a proxy canister (say you’re custodian of A and tell A to upgrade, A sends this command over to B. B is a controller of A, and upgrades A’s code) this would 100% be possible.

1 Like

Do you know if a canister is able to set its own canister controller from within the canister itself?

1 Like

If a canister is its own controller I don’t see why it shouldn’t be allowed to

2 Likes

@Severin We tried to get a canister to upgrade itself (more details on the other topic) with some very mixed results. On one hand, the call failed and the execution stopped after the install_code call to the management canister but on the other hand the upgrade went through successfully.

We speculate that it’s because the underlying wasm is changed but it’s still perplexing what is happening exatcly.