I just learned something new about Portfolio-level custom fields that is undocumented as far as I know (not in How to Get Started With Asana Portfolios | Product Guide • Asana or Portfolios FAQ • Asana).
My client has a requirement to track various attributes of all the projects in a certain Portfolio. Naturally, Portfolio-level custom fields are the solution. However, some of these attributes are to be kept private: they must not be visible to anyone except members of this Portfolio (this is a private-to-members Portfolio, not public to the org), and especially not to the member Projects themselves.
In case you weren’t aware, Portfolio-level custom field values are actually “inherited” by the projects in the Portfolio (at least if they’re non-empty; the empty ones are skipped over). These values appear in the project itself (not just in the row in the Portfolio table) in the “i” Info Project Details popup. But, as it turns out, that’s only true for organization-wide Portfolio custom fields. Local-to-the-Portfolio (non-org-wide) custom fields are kept private to the Portfolio and are not visible in the project for users who do not have access to the Portfolio; just what the client wanted!
The behavior is somewhat analogous to project-level local (not org-wide) custom fields, where their values are protected from view in the Task Detail pane for those without access to the Project in which the custom fields were defined. I was happy to see that the Asana developers carried this through to the Portfolio custom fields implementation–thanks!