We have recently integrated our LTI app with SpeedGrader in Canvas, so that when a student launches an assignment that uses our LTI tool, we register a grading-centric LTI launch URL with Canvas which allows the teacher to view that student's work in SpeedGrader.
Our LTI app has a small number of per-install (that is, per consumer key + secret) configuration parameters, and Canvas API developer keys can optionally be associated with a particular install.
One problem we have run into is that if our app has been installed multiple times on a site-wide or course level, the assignment can be configured to use one particular install of our app, but SpeedGrader may end up launching the app with a different install. This means that different features may be active when the student does the assignment versus when the teacher grades it, which can be confusing.
From reading the Canvas code, it looks like this is because Canvas determines the LTI tool install to use in SpeedGrader based purely on the LTI Launch URL + course, with a preference for tools installed at the course level and a fallback to site-wide tools, and does not take the assignment's associated tool into account.
What we'd ideally like to happen instead is that SpeedGrader uses the same install of the LTI tool as the associated assignment. If appropriate, I'm happy to file this as a bug report on GitHub but I'm not certain that it belongs there.